正規表示式不部分匹配字串

正規表示式不部分匹配字串

我看到已經有人問這個問題了,但回覆對我來說不起作用。我有一個如下所示的 reg exp 結構:

/regexp/(?i:mktg)

以避免字元大小寫情況。我需要建立包含“mktg”但不包含“round”一詞的表達式任何字元大小寫的“SMP”。有人願意幫忙嗎?我已經嘗試過/regexp/([^?i:SMP])/regexp/^((?!SMP).)*$,但這些仍然會拉動這根弦。

謝謝,

瓦萊裡婭

答案1

AFAIK 這應該可以完成這項工作:

^(?i)(?=.*mktg)((?!round|smp).)*$

解釋:

^           : beginning of line
(?i)        : case insensitive
(?=         : start lookahead, zero-length assertion, make sure we have
  .*        : 0 or more any character
  mktg      : literally "mktg"
)           : end lookahead
(           : start group
  (?!       : start negative lookahead, zero-length assertion, make we DON'T have:
    round   : literally "round"
    |       : OR
    smp     : literally "smp"
  )         : end lookahead
  .         : any character
)*          : group must be repeated 0 or more times
$           : end of line

測試用例:

Match: mktg
Match: abc mktg xyz
No match: round mktg 
No match: SmP mktg 
No match: SPM ROUND 

相關內容