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