我有这样的字符串:
q.0.0.0.1 - 1111, q.0.0.0.1。Tt_0-1111, tes-0000000 -1111, q.00.00.000.0.xx_0-1111
我有下一个regexp:
(?: (& lt; = [^ - s] d {3} {4}) | (& lt; = [^ - ] {7 }))[^-]+(?=-)|(?& lt; = -) [^ - ] +
除了q.00.00.000. xx_0-1111之外,它在所有情况下都可以正常工作
这部分正则表达式(?:(& lt; = [^ - ] {4} d)在这个字符串q.00.00.000.0。Xx_0-1111查找子字符串如:
.000.0.xx_0
但是我期望这个regexp找到:
.0.xx_0
我的regexp有什么错,我如何修复它以获得我期望的结果?
我很感激你的帮助。
模式匹配太多,因为第二个选项可以在需要匹配3个数字的第一个选项之前匹配。
对于这个场景,您可以使用单词边界限制第二个断言,然后断言一行中没有3个数字:
(?:(?<=[^-s]{4}d{3})|b(?<=[^-s]{7})(?![.d]*ddd))[^-]+(?=-)|(?<=-)[^-s]+-
Regex演示