regulärer Ausdruck stimmt teilweise nicht mit einer Zeichenfolge überein

regulärer Ausdruck stimmt teilweise nicht mit einer Zeichenfolge überein

Ich habe gesehen, dass diese Frage schon einmal jemand gestellt hat, aber die Antwort hat in meinem Fall nicht funktioniert. Ich habe einen Reg-Exp, der wie folgt strukturiert ist:

/regexp/(?i:mktg)

um Groß- und Kleinschreibung zu vermeiden. Ich muss diesen Ausdruck mit „mktg“ erstellen, aber nicht mit dem Wort „round“.UND"SMP" in jeder Schreibweise. Kann jemand helfen? Ich habe es bereits mit /regexp/([^?i:SMP])und versucht /regexp/^((?!SMP).)*$, aber die ziehen trotzdem an diesem Faden.

Danke,

Valeria

Antwort1

Soweit ich weiß, sollte das hier funktionieren:

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

Erläuterung:

^           : 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

Testfälle:

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

verwandte Informationen