RegEx和多位数中的否定查找问题

  • 本文关键字:查找 问题 多位数 RegEx regex
  • 更新时间 :
  • 英文 :


我对RegEx相当陌生。

我有一个表达式,可以找到一个或多个数字,后跟X和一个特定字符。

d+X[!l1IL]

所以我可以找到2x!编码器22x1

但是如果存在>gt;在前面,我不想要。我试着像一样做否定的回溯

(?<!>>)d+X[!l1IL]

如果我在X前面有一个个个位数,就像>gt;2X1但如果在两者之间有多个数字,比如>gt;222X1,我不明白为什么。

有几个解决方案,这取决于您的匹配边界,也取决于regex风格:

b(?<!>>)d+X[!l1IL]
(?<!>>|d)d+X[!l1IL]
(?<!>>)(?<!d)d+X[!l1IL]

regexp表示

  • b(?<!>>)-匹配单词边界,然后确保当前位置左侧没有>>
  • (?<!>>|d)-紧挨着左边,不能有>>和任何数字
  • (?<!>>)(?<!d)-与上面相同,但由于备选方案的长度不同,所以后备方案被一分为二

最新更新