我对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)
-与上面相同,但由于备选方案的长度不同,所以后备方案被一分为二