我试图写regex到我的自定义搜索引擎我的输入文本:
val examples = listOf(
"'value'",
"NOT 'value'",
"'value' AND 'value1'",
"'value' OR 'value1'",
"'value' AND NOT 'value1'",
"'value' OR NOT 'value1'",
"'value' AND 'value1' AND 'value2'",
"'value' AND 'value1' OR 'value2'",
"'value' AND 'value1' OR NOT 'value2'",
"'value' AND NOT 'value1' OR NOT 'value2'",
"'value' OR 'value1' OR 'value2'",
"'value' OR 'value1' AND 'value2'",
"'value' OR 'value1' AND NOT 'value2'",
"'value' OR NOT 'value1' OR NOT 'value2'",
)
val examplesNotMatched = listOf(
"value",
"AND value",
"OR value",
"NOT value",
"'value' 'value2'",
"'value' OR 'value2' 'value3'",
"'value' AND 'value2' 'value3'",
"'value' NOT 'value2' 'value3'",
"'AND'",
"'OR'",
"'NOT'",
"'testANDtest2'",
"'testORtest2'",
"'testNOTtest2'",
"'ANDtesttest2'",
"'ORtesttest2'",
"'NOTtesttest2'",
"'testtest2OR'",
"'testtest2AND'",
"'testtest2NOT'"
)
模式应该符合所有这些情况。我试过这样的东西:
val pattern = Pattern.compile("('(?:[^']*'\\s*(?:AND|OR|NOT)\\s*)*[^']*')\\s*")
但它不起作用。
有人能帮我一下吗?
1条答案
按热度按时间ha5z0ras1#
https://regex101.com/r/d1RUHE/1
(uses https://tsplay.dev/dimava-regex101-markup-2生成结果regex)