regexp.在string中查找子字符串



我有这样的字符串:

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演示

相关内容

  • 没有找到相关文章

最新更新