Java正则表达式允许所有字符`

Java正则表达式允许所有字符`,java,regex,Java,Regex,我创建的正则表达式模式允许count(*)但不允许`count(*)` 它是单独解决的,但如果我把它们一起传递 count(*),`count(*)` 我应该得到这个匹配,但它的反面是请注意,[^`]*匹配了零或更多的反勾号,因此它不会阻止在反勾号之间匹配计数(*)字符串 你可以用 (?i)(?<!`)Count\(\*\)(?!`) 见 详细信息 (?i)-不区分大小写的修饰符 (?-no`允许立即位于当前位置的左侧 \b-单词边界 Count\(\*\)-Count(*)子字符串

我创建的正则表达式模式允许
count(*)
但不允许
`count(*)`

它是单独解决的,但如果我把它们一起传递

count(*),`count(*)`

我应该得到这个匹配,但它的反面是

请注意,
[^`]*
匹配了或更多的反勾号,因此它不会阻止在反勾号之间匹配
计数(*)
字符串

你可以用

(?i)(?<!`)Count\(\*\)(?!`)

详细信息

  • (?i)
    -不区分大小写的修饰符
  • (?-no
    `
    允许立即位于当前位置的左侧
  • \b
    -单词边界
  • Count\(\*\)
    -
    Count(*)
    子字符串
  • (?!`)
    -当前位置右侧不允许立即出现
    `
在爪哇

String regex = "(?i)(?<!`)Count\\(\\*\\)(?!`)";

String regex=“(?i)(?Pattern.matches for
count(*),`count(*)`
false@aniket_777当然,
matches()
需要完整的字符串匹配,使用
find()
在较长的字符串中查找较小的匹配项。最终目标是什么?提取还是替换?这意味着我的原始模式也可以使用
find()
method。谢谢你的回答。@aniket_777但是你原来的正则表达式没有限制
Count(*)
上下文。你需要lookarounds。是的,但是如果在backtick中有一个空格,比如
`Count(*)`
它不允许。
(?i)(?<!`)\bCount\(\*\)(?!`)
String regex = "(?i)(?<!`)Count\\(\\*\\)(?!`)";