[解決済み] 単語を含まない行にマッチさせる方法 [重複]について
質問
PythonスタイルのREGEXを使用して、特定の単語を含まない行にマッチさせる方法を考えていました(Pythonの関数を使用せず、単にREGEXを使用)?
例
PART ONE OVERVIEW 1
Chapter 1 Introduction 3
QUATTRO;PART;を含まない行にマッチさせたい。
どのように解決するのですか?
これは動作するはずです。
/^((?!PART).)*$/
行頭からだけ除外したい場合(しないとは思いますが、ご参考までに)、こんな使い方もできます。
/^(?!PART)/
編集する(リクエストによる)。このパターンが有効な理由
このパターンは
(?!...)
の構文は
負のルックアヘッド
で、これはいつも説明するのが難しいと思っています。基本的に、それは
このポイントに続くものは正規表現にマッチしてはいけません。
/PART/
."
リンク先のサイトでは、私よりもずっとうまく説明されていますが、これを分解してみます。
^ #Start matching from the beginning of the string.
(?!PART) #This position must not be followed by the string "PART".
. #Matches any character except line breaks (it will include those in single-line mode).
$ #Match all the way until the end of the string.
は
((?!xxx).)*
イディオムは、おそらく最も理解しにくいものでしょう。私たちが見たように
(?!PART)
は先の文字列を見て、次に来るものはサブパターンにマッチしないと言います。
/PART/
. ですから、私たちが
((?!xxx).)*
でやっていることは、文字列を一文字ずつ調べて、すべての文字にこのルールを適用しているのです。各文字は何でも構いませんが、その文字と、その次の数文字を取ると、単語
パート
.
は
^
と
$
のアンカーは、文字列の最初から最後までの全体にルールを適用することを要求するために存在します。これらのアンカーがない場合、文字列のどの部分であっても、先頭が
PART
で始まらない文字列はすべてマッチしてしまいます。たとえ
PART
にもマッチします。なぜなら、(例えば) 文字 A の後には正確な文字列である
PART
.
私たちは
^
と
$
であれば
パート
が文字列のどこかにあれば、そのうちの1文字が
(?=PART).
にマッチし、全体のマッチは失敗します。お役に立てれば幸いです。
関連
-
[解決済み] MACアドレスの正規表現とは何ですか?
-
[解決済み] Regex Last occurrence?
-
[解決済み] 正規表現で「逆マッチ」を行うには?
-
[解決済み] 正規表現ネガティブルックアヘッド
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] grepによるネガティブマッチング(fooを含まない行にマッチする)
-
[解決済み】指定した接尾辞で終わらない文字列に対する正規表現
-
[解決済み】Grep正規表現に文字列が含まれない件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Regex オプション文字にマッチさせる方法
-
[解決済み] 正規表現で複数の単語を任意の順序で並べる [重複]。
-
[解決済み] 正規表現による逆マッチ[重複]の場合
-
[解決済み] Regex Last occurrence?
-
[解決済み] 半角スペース用正規表現
-
[解決済み] 正規表現の末尾にある中括弧内のカンマ区切りの数字は何を意味するのですか?
-
[解決済み] アドレスフィールド検証のための正規表現
-
[解決済み] 一致した正規表現パターンを awk で表示するには?
-
[解決済み] 正規表現、空白文字とコロンを除くすべての非英数字文字
-
[解決済み] 単語を含まない行にマッチする正規表現