我已经检查了其他几个问题,例如this,this,this,this和this,但我似乎无法从这些问题中找出我的问题。很可能我错过了一些简单的东西,但我不知道是什么。
我有一个如下字符串:
This is some random text{colA}that needs{COLBB} to be matched.
我需要匹配A
和BB
,但没有别的。规则如下
我设法得到了这个:(?i:[a-z]{1,2}(?<={col[a-z]{1,2})(?=}))
匹配{colaa}
但不匹配{cola}
(在{cola}
的情况下,当需要返回时返回la
a
)。我无法弄清楚如何调整它以适应两种不同的匹配情况。
我在.Net工作,非常感谢我能帮助解决这个问题。我觉得这么近,但距离很远!
答案 0 :(得分:1)
关键是将lookbehind断言移到模式的开头,这样我们就可以指定 exact 前缀,而不必在前缀 plus 上断言匹配的部分。所以:
(?i:(?<=\{col)[a-z]{1,2}(?=\}))
答案 1 :(得分:1)
试试这个:
(?i:(?<={col)[A-Za-z]{1,2}(?=}))
(?i: … )
(?<={col)
[A-Za-z]{1,2}
(?=})