【发布时间】:2015-03-06 05:07:13
【问题描述】:
如果我知道我需要的正则表达式功能的名称,我会有一个更好的标题。
作为一项验证任务,我需要验证文本流是否仅包含与我建立的正则表达式模式匹配的部分,无论它发生多少次。例如,如果我的模式是“foo”并且我有字符串
"foo foofoo"
结果应该是三个匹配并且没有其他不匹配的文本。相反,字符串
"foo foo fooo"
应该返回三个匹配,但我需要检测剩余的可打印字符 'o' 不匹配。我的第一个想法是将管道字符用于“或”逻辑,例如“(?:foo)|(\S)”,我以为我已经对其进行了排序,但是字符串
"-foo foo foo"
只匹配两次。似乎前导字符会导致引擎跳到表达式的右侧,并且由于它的定义很广泛,它会一直捕获到下一个单词中断。显然,我的心理表征并不能反映引擎的运行方式。我哪里错了?
【问题讨论】:
-
您需要实际的匹配数,还是只是为了检测存在不匹配的非空白文本?
-
我认为这需要两个不同的正则表达式操作。首先进行测试以验证匹配后没有任何剩余,然后进行第二次校准以进行匹配并提取数据。这有点像基于集合的“除外”逻辑。
-
这个问题是相关的,但对我来说还不是解决方案。 stackoverflow.com/questions/406230/…
标签: regex