【发布时间】:2016-07-25 16:36:43
【问题描述】:
我有这样的文字
real:: a
real :: b
real c
现在我想匹配那些没有:: 的实数,在这种情况下,我只想匹配第三个实数。所以我尝试了带有前瞻的正则表达式
real\s*(?!::)
但这匹配
real :: b
real c
对于\s* 表示零个或多个\s,为什么要匹配real :: b?
更新
感谢 Wiktor Stribiżew。使用 regex101 调试工具。我们可以找到backtrack 让事情变得复杂。
我想出了另一个类似但我无法解决的任务
real (xx(yy)) :: a
real (zz(pp)):: b
real (cc(rr)) c
再次,我想匹配没有:: 关注的real (cc(rr))。
real\s*\(.*?\)+(?!\s*::)
这是我尝试过的,但失败了。查看正则表达式调试,这也是由于回溯。但是如何正确地做到这一点呢?
【问题讨论】:
标签: regex