`q.?r` 的正则表达式,但不是 `sqrtf`

问题描述 投票:0回答:1

我需要一个按顺序匹配字符

q
r
的正则表达式,也许中间还有另一个字符,而不会看到来自
sqrtf
实例的命中。但是
sq.?r
q.?rt
q.?rtf
都是允许的。如何指定?

我最接近的是

(s(?!qrtf))?q.?r

但看起来

()?
并不是“贪婪”,如果这个词适用于此的话。它成功地没有命中
sqr
中的
sqrtf
,但确实命中了
qr
中的
sqrtf
,因为它确实不包含
s
,更不用说“
s
后面没有
qrtf
”。

regex
1个回答
0
投票

你可以使用

q(?<!sq(?=.?rtf)).?r

请参阅 正则表达式演示

详情

  • q(?<!sq(?=.?rtf))
    - 一个
    q
    字母,前面不带
    s
    ,并且后面不带除换行符之外的任何可选字符,然后是
    rtf
    子字符串
  • .?
    - 除换行符之外的任何可选字符
  • r
    -
    r
    字母。

同一想法的另一个变体是

(?<!s(?=q.?rtf))q.?r

© www.soinside.com 2019 - 2024. All rights reserved.