use*_*694 5 java regex negative-lookahead
我有一个如下的正则表达式:
.{0,1000}(?!(xa7|para(graf))$)
Run Code Online (Sandbox Code Playgroud)
使用Java.我原以为它会导致以下文本失败:
blaparagraf
因为最后发现了paragraf
那是因为它.{0,1000}会匹配整个主题,因此它不会跟着xa7或paragraf($仅后跟).
你想要负面的看法:
.{0,1000}(?<!xa7|paragraf)$
Run Code Online (Sandbox Code Playgroud)
错误地放置断言是一个常见的错误。如果要使用超前模式,则模式如下所示:
^(?!.*paragraph$).*$
Run Code Online (Sandbox Code Playgroud)
这匹配(如在rubular.com上看到的):
something something para
paragraph something something
Run Code Online (Sandbox Code Playgroud)
但不匹配:
something paragraph
Run Code Online (Sandbox Code Playgroud)
因此,这里的主要区别是我们在匹配之前(或在您的情况下)从字符串的开头开始向前看。当然,我们寻找的不是简单的而是。.*.{0,1000}paragraph$.*paragraph$
也就是说,要检查字符串是否不以有限长度结尾,最自然的解决方案是在支持时回首。
^.*$(?<!paragraph)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |