我创建了正则表达式模式以允许 count(*)
但不允许 `count(*)`
[^`]*[Cc][Oo][Uu][Nn][Tt][(](\*)[)][^`]*
它单独工作,但如果我把它们一起传递
count(*),`count(*)`
我应该得到这场比赛,但结果相反
最佳答案
请注意[^`]*
匹配零或多个反引号,因此不会阻止匹配 Count(*)
反引号之间的字符串。
您可以使用
(?i)(?<!`)Count\(\*\)(?!`)
或者,如果您需要将其作为整个单词进行匹配,请添加 \b
在单词之前的开头:
(?i)(?<!`)\bCount\(\*\)(?!`)
请参阅regex demo
详细信息
-
(?i)
- 不区分大小写的修饰符 -
(?<!`)
- 否`
允许紧邻当前位置的左侧。 -
\b
- 单词边界 -
Count\(\*\)
-Count(*)
子串 -
(?!`)
- 否`
允许立即位于当前位置的右侧。
在 Java 中,
String regex = "(?i)(?<!`)Count\\(\\*\\)(?!`)";
关于Java 正则表达式允许除 ` 之外的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61251060/