特定のパターン (具体的にはとそれに続くもの、 など)で始まる文字列を除くすべての文字列に一致する正規表現が必要です。index.php
index.php?id=2342343
ベストアンサー1
正規表現: 次を除くすべてに一致:
- 特定のパターンで始まる文字列(例: any - 空、too - で始まっていない文字列
foo
):- NFA 向けの先読みベースのソリューション:
- ルックアラウンドをサポートしていない正規表現エンジン用の否定文字クラスベースのソリューション:
- 特定のパターンで終わる文字列(たとえば、
world.
末尾に no が付く): - 特定のテキストを含む文字列(つまり、 を含む文字列には一致しません
foo
):- ルックアラウンドベースのソリューション:
- POSIX 回避策:
- オンライン正規表現ジェネレーターを使用するwww.formauri.es/personal/pgimeno/misc/non-match-regex
- 特定の文字を含む文字列(たとえば、記号を含む文字列との一致を避ける
|
): - ある文字列に等しい文字列(つまり、等しくない文字列
foo
):- ルックアラウンドベース:
- POSIX:
- 文字列:
- PCRE (ただし を除く任意のテキストに一致
cat
):/cat(*SKIP)(*FAIL)|[^c]*(?:c(?!at)[^c]*)*/i
または/cat(*SKIP)(*FAIL)|(?:(?!cat).)+/is
- ルックアラウンドを許可する他のエンジン:
(cat)|[^c]*(?:c(?!at)[^c]*)*
(または(?s)(cat)|(?:(?!cat).)*
、または(cat)|[^c]+(?:c(?!at)[^c]*)*|(?:c(?!at)[^c]*)+[^c]*
)そして言語手段でチェックします。グループ1が一致した場合、それは必要なものではありません。そうでない場合は、空でない場合は一致する値を取得します。
- PCRE (ただし を除く任意のテキストに一致
- 特定の単一の文字または文字の集合:
デモの注意: デモでは、隣接する行への一致オーバーフローを回避するために、否定文字クラス内で改行\n
が使用されます。個々の文字列をテストするときには、改行は必要ありません。
アンカーノート: 多くの言語では、\A
文字列の明確な開始を定義するために を使用し、\z
(Python では 、\Z
JavaScript では$
OK) を使用して文字列の終了を定義します。
ドットに関する注意: 多くのフレーバー (POSIX、TRE、TCL を除く) では、改行文字以外の任意の.
文字に一致します。改行を含む任意の文字に一致させるには、対応する DOTALL 修飾子 ( PCRE/Boost/.NET/Python/Java およびRuby) を必ず使用してください。/s
/m
.
バックスラッシュに関する注意: エスケープ シーケンスを許可する C 文字列を使用してパターンを宣言する必要がある言語 (\n
改行など) では、エンジンがリテラル文字として処理できるように、特殊文字をエスケープするバックスラッシュを 2 重にする必要があります (たとえば、Java では、world\.
として宣言される"world\\."
か、文字クラス を使用します: "world[.]"
)。生の文字列リテラル (Python r'\bworld\b'
)、C# の逐語的文字列リテラル@"world\."
、または のようなスラッシュ文字列/正規表現リテラル表記を使用します/world\./
。