問題タブ [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 投票する
3 に答える
97 参照

java - 1つを除くすべての単語を一致させる方法は?

PREで始まりPREで終わる式を一致させようとしています。怠惰な一致を探しています。つまり、一致した式の終了PREは、開始PREの後に最初に見つかったものである必要があります。私は、RegExrでテストして、ネガティブな先読み正規表現でこれを達成しようとしていました。

正規表現:

一致する式:

上記の式は、指定された正規表現と完全に一致しますが、PREerpPREとのみ一致すると予想していました。PREで始まりPREで終わる表現に怠惰に一致する正規表現を提案してください。

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

regex - 単語に一致するが、コメントには一致しない

単語を一致させようとしていますが、前にコメントが付いている場合は一致し/*ません (後にはありません*/)。これまでのところ、これを達成するために否定的な先読みアサーションを使用しようとしましたが、うまくいきませんでした。これは、否定的な先読みまたは否定的な後読みアサーションで可能になるのでしょうか、それとも無駄な努力でしょうか?

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

java - この Java 正規表現に対して否定先読みを適切に使用するにはどうすればよいですか?

この Java 正規表現は、2 つの括弧の間のすべてのテキストと一致すると予想されます。

コメント付きで表示:

しかし、そうではありません(このテストで実証されているように)。

この入力の場合:

%foo(%bar \(%baz\)) hello world)

私は期待%bar \(%baz\)していましたが、見ました%bar \(%baz\(エスケープされた右括弧なし)。否定的な先読み構造の使用法が何らかの形で間違っていると推測しています。誰かが私の正規表現の問題を説明してもらえますか? ありがとう。

0 投票する
3 に答える
2658 参照

java - REGEXP:キャプチャグループの後に続く

次のステートメントに一致する必要があります。

これらを一致させずに:

だから私はこの正規表現が機能するだろうと考えました:

しかし、そうではありません-そしてその理由はわかりません-これはキャプチャグループ(。*)が原因である可能性があると思いますので、*演算子を怠惰にすることで問題が解決すると思いました...しかし違います。この正規表現も機能しません:

誰かが私を解決策の方向に向けることができますか?

解決

(のように)最後にない 文を取得するには、 (author @Thorbear)を使用する必要があります。is hereHi there John Doe (the second)

また、途中にデータが含まれている文の場合(たとえばHi there John Doe (the second) is hereJohn Doe(2番目)が目的のデータである場合)、単純なグループ化で十分です。

0 投票する
3 に答える
249 参照

java - Java の正規表現ルックアラウンド コンストラクト: 必要な最適化に関するアドバイス

次のコンマ区切りリストでファイル名を検索しようとしています。

text.txt,temp_doc.doc,template.tmpl,empty.zip

Java の正規表現の実装を使用します。出力の要件は次のとおりです。

  1. ファイル名のみを表示し、それぞれの拡張子は表示しません
  2. 「temp_」で始まるファイルを除外する

次のようになります。

文章

テンプレート

空の

これまでのところ、最初のタスクに対処するために多かれ少なかれ満足のいく正規表現を書くことができました。

2 番目の要件に準拠させるための最良のオプションは、ルックアラウンド構造を使用することですが、信頼できる最適化された式を記述する方法がわかりません。次の正規表現は必要なことを行っているように見えますが、明示的な最大ファイル名長に依存する以外の理由がなければ、明らかに欠陥のあるソリューションです。

PS私は正規表現を数日間しか勉強していないので、この初心者スタイルの過度に複雑なコードを笑わないでください:)

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

python - Pythonで正規表現を否定的な先読みに置き換える

通常のテキストを囲む一重引用符を削除しようとしています。たとえば、次のリストがあるとします。

「'ABC'」を「ABC」に変えたいのですが、他の引用符はそのままにしておきます。

以下のようにlook-headを使用しようとしました:

エラーメッセージを受け取りました:

他の回避策はありますか?よろしくお願いします!

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

regex - 正規表現の逆の結果

私はこの正規表現を持っています

次のような文字列に一致します

この正規表現の逆の結果を取得したい。ネットとスタックオーバーフローを閲覧したところ、

トリックを行う必要がありますが、そうではありません。

誰かが私を正しい方向に向けることができますか?

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

php - 部分文字列に単語を含めることができない2つの文字列の間にある2つの文字列の間の文字列を見つけるための正規表現

私の質問のタイトルは少し複雑ですが、基本的に私がやりたいことは次のとおりです。

次のテキストがあるとします。

私が見つけることを可能にする正規表現はありますか?

  • [td] タグと [/td] タグの間にある文字列
  • [td] から [/td] までの部分全体が [table] タグと [/table] タグの間にある
  • また、[table] タグと [td] タグの間のテキストに [/table] タグを含めることはできません
  • [/td] タグと [/table] タグの間のテキストに [table] タグを含めることはできませ

当たり前のように聞こえるかもしれませんが、この正規表現はユーザー入力の処理に使用されるため、安全な正規表現である必要があり、ユーザーがテーブルの外で [td] を入力した場合 (すべてのタグは html に変換されます)、サイトのページのレイアウトに使用されるテーブルに影響を与えます。

したがって、最初に「test str 1」に一致し、次に「test str 2」に一致する必要がありますが、その文字列が td タグ内にある場合に限ります。これは、テーブルタグ内にある必要があり、その間に別のテーブルタグがない場合があります.

これは私が得た限り近いです:

しかし、テーブルタグがあってはならない部分、つまりテーブルタグと td タグの間に何かが欠けていると思います。

0 投票する
3 に答える
3199 参照

php - 「クラス」という単語を無視するための否定先読みを使用した正規表現

私はこれに夢中になっています。とてもシンプルですが、正しい正規表現がわかりません。ブラックリストに登録された単語、つまり「ass」に一致する正規表現が必要です。

たとえば、次の文字列の場合:

私はその正規表現を試しました:

これは、「クラス」ではなく「ベース」ボットの「お尻」に一致します。この正規表現は、両方の出現で「お尻」にフラグを立てます。Google で複数の否定的な先読みを確認しましたが、どれも機能しません。

注: これは CMS のためのものです。モデレーターが潜在的に不適切な言葉を簡単に見つけられるようにするためです。フィルタリングを行うためにコンピューターに頼ることはできません。