1. ホーム
  2. regex

[解決済み】指定した接尾辞で終わらない文字列に対する正規表現

2022-04-02 22:46:37

質問

任意の文字列にマッチする適切な正規表現を見つけることができません。 ではなく で終わることが条件です。例えば、ある条件で終わるものにはマッチしたくない。 a .

これは

b
ab
1

これは一致しません

a
ba

正規表現の末尾が $ を使用して終わりを示しますが、その前に何があるのかがわかりません。

編集 : 元の質問は、私の場合、正当な例ではないようです。では、複数の文字を扱うにはどうすればいいのでしょうか?で終わらないものは ab ?

を使って、修正することができました。 このスレッド :

.*(?:(?!ab).).$

ただし、1文字だけの文字列にはマッチしない。

解決方法は?

言語は指定されていませんが、正規表現のフレーバーが アサーションの後ろを見る これは必要なものです。

.*(?<!a)$

(?<!a) は否定されたルックビハインドアサーションで、 文字列の最後 (あるいは行が m 修飾子)がない場合、文字 "a"は存在しません。

参照 Regexrのページはこちら

これは文字クラスではなく、文字列をチェックするものなので、他の文字でこれを拡張することも簡単にできます。

.*(?<!ab)$

これは、"ab" で終わらないものにマッチします。 Regexrで見る