Das id(\d|(?!6|9))
Muster entspricht id
gefolgt mit einer beliebigen 1 Stelle oder, wenn es keine 6
oder 9
ist. Das Alternation (\d
oder (?!6|9)
) ermöglicht id6
und id9
, weil die erste Alternative in NFA Regex "gewinnt" (d. H. Die weiteren Alternativen nach einem Treffer werden nicht getestet).
Wenn Sie nur id
Matches mit 6
oder 9
Verwendung
\bid(?![69]\b)\d+\b
ausschließen müssen Siehe regex demo
Wenn Sie alle id
mit 6
und 9
passend vermeiden möchten folgenden es, verwenden
\bid(?![69])\d+
Siehe another regex demo.
Hier \d+
Streichhölzer eine oder mehr Ziffern, \b
für eine Wortgrenze steht (die Ziffern vorangestellt werden sollen und anschließend mit Nicht- „Wort“ Zeichen), und der (?![69])
Look-Ahead nicht das Spiel, wenn es 6
ist oder nach id
(mit oder ohne eine Wortgrenzenprüfung - je nachdem, was Sie brauchen).
UPDATE
Wenn Sie die id
deren Zahl ausschließen müssen nicht startet mit 6
oder 9
, können Sie
\bid[0-578]\d*
(demo)
auf Shafizadeh's Kommentar basiert.
Sie alle Zahlen in eine Zeichen-Klasse schreiben verwenden, außer '6' und '9' . Etwas wie das: ['/id[12345780]/gm'](https://regex101.com/r/uI8uZ7/2) – Shafizadeh
Ist dies (' id1'..'id9') ein gutes Beispiel für das, was Sie eigentlich tun wollen oder haben Sie Ihr Problem zu stark vereinfacht? Ich frage nur, weil so eine kleine Auswahl möglicher Dinge nicht nach einer realen Situation klingt. –
Bitte klären Sie, ob auf 'id' mehrere Ziffern folgen oder nicht? –