我有一些字符串:
q.0.0.0.1 - 1111, q.0.0.0.1。tt_0 - 1111, te - 00000000 - 1111
和我有regexp切割它们:
r ' (& lt; = [^ - ] {7 })[^-]+(?=-)|(?& lt; = -)[^ - ] +">
It regexp cut string start from 7 char to -.
我得到了一个预期的结果:
q.0.0.0 - 1111, q.0.0.0 - 1111, te - 1111
但是当我有这样的字符串:
q.0.00.0.0 - 1111, q.0.00.0.0.tt_0 - 1111
it regexp cut this sting不正确
q.0.00。-1111年,q.0.00。-1111,但我期待q.00 -1111
我知道这部分代码有什么问题
r ' (& lt; = [^ - ]{7})[^-]+(?=-)|(?& lt; = -)[^ - ] +">
---------------^
如何检查字符串中4个字符后的字符数,如果数字大于1,将{7}更改为6
您可以使用后面的选项来添加断言-
以外的4个字符或后跟2位数字的空白字符:
(?:(?<=[^-s]{4}dd)|(?<=[^-s]{7}))[^-]+(?=-)|(?<=-)[^-s]+-
模式匹配:
(?:
2个备选项的非捕获组(?<=[^-s]{4}dd)
断言-
以外的4个字符或左边后跟2位数字的空白字符|
或(?<=[^-s]{7})
在-
以外的7个字符或左侧的空白字符
)
关闭非捕获组[^-]+(?=-)
|
或(?<=-)[^-s]+-
在左侧断言-
并匹配除-
以外的1+字符和一个空白字符,然后匹配-
Regex演示