問題タブ [negative-lookahead]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1046 参照

regex - vimでの正規表現の否定

vimでは、正規表現を使用して、文字で終わる各行を強調表示したいと思い//ます:。私は次のことを試しました

これはコメントではうまく機能しましたが、コロンを含む行では機能しませんでした。理由はありますか?

0 投票する
1 に答える
229 参照

php - URL検出とBBスタイルタグ(正規表現、先読みの問題)

だから私は小さなCMSを構築していて、コンテンツエディタでHTMLを許可しないようにしたいと思います。そのため、カスタマイズを改善するために、テキスト内の生のURLを検出し、BBのようなタグをサポートしたいと考えています。

残念ながら、私は正規表現にかなり慣れていないので、これを機能させることができないようです。文字列に対して2つの正規表現を実行しています。1つ目は生のURLを検出し、2つ目はBBのようなURLを検出します。後者は完全に正常に機能しているようですが、前者は干渉し、タグでラップされたURLも変換します。

ここで見つけたコードから始めて、いくつか追加しました。

タグなしのURLのコードは次のとおりです。

単語の文字ではないwww.ので、前のネガティブな後ろ姿があり、それがないと次のようなものになります/

後も一致しhttp://ます。

上記の正規表現は次の一致を生成します(http://gskinner.com/RegExr/でテスト済み、一致は太字http://で示されています。これ以上URLを投稿することは許可されていないため、後にスペースを追加する必要がありました)。

www.example.com
http:// www.example.com http://example.com
[
リンクhttp://www.example.com]問題なし1[/link]
[リンクwww.example.com]問題なし2 [/ link]
[link http://www.example.com] http://www.example.com [/ link ]

私はネガティブな先読みを動かしてかっこで遊んでみましたが(かなり目的もなく)、成功しませんでした。

完全を期すために、タグマッチング正規表現(これは機能しているようです)を次に示します。

誰かがすぐにエラーを見つけることができると確信しています。

よろしくお願いします!

0 投票する
1 に答える
1126 参照

.net - キャプチャ グループ全体に否定先読みを適用するにはどうすればよいですか?

次の正規表現と件名のテキストを考えると、否定先読みが名前付きキャプチャ グループの最後の文字にのみ適用されるのはなぜURLですか?

この正規表現には、タグ(?!"|(</a))内の URL を一致させないようにする否定的な先読みがあります。<a>これは、URL の後に引用符 ('または") または終了</aタグが続くかどうかを確認することによって行われます。

私は次の結果を得ています

最後の文字だけでなく、キャプチャ グループ全体に否定先読みが適用されることを期待していました。これは可能ですか?私は何を間違っていますか?http://example.comキャプチャされるの最後のインスタンスのみに一致することを期待していました。

0 投票する
1 に答える
14475 参照

regex - 正規表現で負の先読みを使用して不要な行を削除する方法

ネガティブ先読みの使用に関してサポートが必要です。Notepad ++を使用していて、次を含む行を除くすべての行を削除したい<title>(.*)</title>

私はいくつかのことを試しましたが、それはうまくいきませんでした。

0 投票する
1 に答える
12063 参照

regex - POSIX 正規表現: 式から単語を除外しますか?

C プログラム コードで使用できる POSIX (拡張) 正規表現を使用して正規表現を作成しようとしています。

具体的には、次のように考えましたが、一致する式から「http」という単語を除外したいと考えています。いくつかの検索では、POSIX が特定の文字列をキャッチすることを明らかにしているようには見えません。以下の例では、「ネガティブルックアヘッド」と呼ばれるものを使用しています (つまり、(?!http:) )。ただし、これは POSIX 以外の方言で定義された正規表現でのみ使用できるものである可能性があります。否定先読みは許可されていますか? 論理 NOT 演算子は POSIX で許可されていますか (つまり! )?

動作する正規表現の例:

href|HREF|src[[:space:]]=[[:space:]]\"(?!http:)[^\"]+\"[/]

他の方言のように否定先読みを使用できない場合、特定の単語「http:」を除外するために上記の正規表現に何ができるでしょうか? 理想的には、逆ロジックがなく、最終的にその過程でとてつもなく長い正規表現を作成する方法はありますか? (私が上に持っているものはすでにかなり長いです, できればもっと混乱しないようにしたいです)

[注: スタック オーバーフローの他の関連するスレッドを調べましたが、最も関連性の高いスレッドは、この質問を「一般的に」しかしていないようです。 、私は上記の (?!insertWordToExcludeHere) 否定的な先読みを見てきましたが、それは PHP だけのものなのではないかと心配しています。)

[注 2: POSIX の正規表現の言い回しも使用します。助けていただければ幸いです。「http:」を除外する正規表現がどのように見えるか、および(?!http:)を置き換えて現在の正規表現にどのように適合するかについて、誰か提案がありますか?]

0 投票する
1 に答える
393 参照

c# - C#コードが混在する文字列内の正規表現マッチNCコメント

NC コードと C# コードが混在するテキストファイルがあります。C# コードは "<#" で始まり "#>" で終わります。ここで、すべての NC コメントを検索するために 1 つの正規表現が必要です。問題の 1 つは、NC コメントが「;」で始まることです。したがって、NC コメントを「;」で区別するためにいくつかの問題が発生しました。C#コードの。

たった1つの正規表現でこれを達成することは可能ですか?

正規表現の結果は {1. NC-コメント、2.コメント、3.コメント}

私は次の正規表現で遊んだ:

解決策の 1 つは、各 "<#" をスタックにプッシュし、このスタックから各 "#>" をポップすることです。したがって、スタックが空の場合、現在の文字列は NC コードです。次に、この文字列が NC コメントかどうかを確認する必要があります。

0 投票する
1 に答える
370 参照

python - 正規表現の先読みを使用してすべての非 URL を一致させる

Python/django では、次のように「:」文字の前の文字を照合して「タイトル」を抽出する文字列があります。

だから私はタイトルを抽出するためにこのコードを使用しています:

次のように、ユーザーが文字列に URL のみを入力すると問題が発生します。

空の文字列が返されることを好みます。否定的な先読みメタタグ (?!) を使用してみました:

ただし、空の文字列ではなく「http」が返されます。それはどうあるべきですか?

0 投票する
2 に答える
218 参照

java - パターンの不一致を取得する方法: 正規表現の後に別の正規表現が続かない

これは明らかに単純化されたケースですが、必要なのは、 に一致しないが ( が続かない)aabb|bbaaに対しては正常に機能する正規表現です。aabb|...

のような正規表現[ab]+(?!\|[ab]+)*はかなり近いですが、それでもaabbから一致しますが、その場合はまったく一致しaabb|bbaaたくありません。

文字列の開始 ( ^) および文字列の終了 ( $) アンカーの使用は許可されていません。

0 投票する
1 に答える
177 参照

regex - 否定的な先読みを使用した Perl 正規表現が予期しない動作をする

/ezmlm-('weed' または 'return' 以外の単語)\s+/ を正規表現と一致させようとしています。以下は、正しいことを行う foreach ループと、ほぼ正しいことを試みる正規表現を示しています。

サンプル プログラムの出力は次のとおりです。

最後の例では、正規表現は失敗し、間抜けではあるが正当な電子メール アドレスに一致します。次のように、否定先読みパターンの後に \s を配置して正規表現を修正すると、次のようになります。

正規表現はまったく一致しません。負のパターンがどのように機能するかに関係していると思います。私は貪欲でない否定を試みましたが、私を逃れている「perldoc perlre」に埋もれているいくつかの教訓があるようです。単一の正規表現でこれを行うことは可能ですか?