我需要一个按顺序匹配字符
q
和 r
的正则表达式,也许中间还有另一个字符,而不会看到来自 sqrtf
实例的命中。但是 sq.?r
、q.?rt
和 q.?rtf
都是允许的。如何指定?
我最接近的是
(s(?!qrtf))?q.?r
但看起来
()?
并不是“贪婪”,如果这个词适用于此的话。它成功地没有命中sqr
中的sqrtf
,但确实命中了qr
中的sqrtf
,因为它确实不包含s
,更不用说“s
后面没有qrtf
”。
你可以使用
q(?<!sq(?=.?rtf)).?r
请参阅 正则表达式演示。
详情:
q(?<!sq(?=.?rtf))
- 一个 q
字母,前面不带 s
,并且后面不带除换行符之外的任何可选字符,然后是 rtf
子字符串.?
- 除换行符之外的任何可选字符r
- r
字母。同一想法的另一个变体是
(?<!s(?=q.?rtf))q.?r
。