Regexp.如何检查一些字符后的字符数

  • 本文关键字:字符 何检查 Regexp regex
  • 更新时间 :
  • 英文 :


我有一些字符串:

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

最新更新