問題タブ [non-greedy]

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 投票する
4 に答える
65 参照

regex - 繰り返される完全な文字列を見つけるための RegExp (2 レベルの欲張り)

(おそらく複雑な) RegExp の質問があります。モデルからファイルを生成するツールで、モデルが名前を 2 回使用していると表示されますが、これがどの名前であるかは表示されません。問題の名前はすべて「CK_」で始まり、その後に空白以外が続くことを知っています。このテストファイルを準備しました:

ご覧のとおり、「CK_123abc」が 2 回表示されています。RegExp を使用して、それらすべて (さらにある場合) をキャッチしたいと考えています。これまでに取得したもの: (CK_\S*).+\1

これは正常に機能し、次のテキストと一致します。

しかし、それも一致します

2 番目の不要な一致はCK_1です。私の実際のドキュメントはこれらの「半文字列」一致でいっぱいであるため、データ内で実際の一致 (ここの最初のものなど) を見つけることができません。(CK_\S*)は何らかの理由で貪欲ではない、または正規表現全体が貪欲であると思います。私のユースケースが機能するには、(CK_\S*)が最初に可能な限り一致する必要があり、その後、ドキュメントの後半で同じ一致が見つかるはずです。

私はメモ帳++を使用しています(PCREを使用)。「。」"\r"および"\n"に一致します。

どんな指針も高く評価されます。

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

regex - x で始まり、y で終わり、z を含むが途中に x を含まない複数行の文字列に一致する正規表現

例を挙げて説明するとよいでしょう。

これはテキストです:

<li>で始まり、で終わり、</li>を含む文字列を検索したいTHE WORDS<li> hello THE WORDS </li>とのみに一致することを期待してい<li> world THE WORDS </li>ます。

私が試したこと:(?s)<li>.*?(THE WORDS).*?</li>

これで、2試合目は<li> cruel </li> <li> world THE WORDS </li>.

Sublime Text を使用しています。

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

regex - 正規表現は、より小さな部分一致を含むすべての一致を取得します

次の入力文字列があります

および次の正規表現:

この正規表現は、次のより大きな一致のみを提供します

より小さな一致を取得するために正規表現を使用する方法は?

貪欲でない演算子を使用してみましたが、どちらも機能しませんでした。

また、Java や C# の一致グループや一致コレクションなどを使用して、両方を一致グループとして取得することは可能ですか?

0 投票する
4 に答える
929 参照

python - Python での貪欲でない dotall 正規表現

PHP で記述されたメソッドのアノテーションを解析する必要があります。それらを検索するための正規表現 (以下の単純化された例を参照) を作成しましたが、期待どおりに機能しません。/**との間のテキストの最も短い部分に一致する代わりに*/、ソース コードの最大量に一致します (以前のメソッドは注釈付き)。私は正しい.*?貪欲でないバージョンを使用していると確信し*ており、DOTALLがそれをオフにする証拠は見つかりませんでした。どこに問題があるのでしょうか?ありがとうございました。

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

regex - クエスチョンマーク「レイジー」モードに関する正規表現

?ここのマークが「怠け者」を意味することは理解しています。

私の質問は本質的に[0-9]{2}?vsです[0-9]{2}

それらは同じですか?
もしそうなら、なぜ前者の式を書いているのでしょうか? レイジー モードはよりコストのかかるパフォーマンスではありませんか?
そうでない場合、違いを教えていただけますか?

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

regex - Bash : 文字列を検索し、その周りの c-commentary 記号を削除します (できればインプレース編集)

私はすでに長い間これに悩まされています: テキスト ファイル内の文字列を照合し、その周りの C コメントを削除する必要があります。編集はインプレースまたは新しいファイルに行う必要があります (その後、mv-command を移動してプッシュします)。

文字列は簡単に見つかりますが、コメントを削除するにはどうすればよいですか? 行数は常に同じではありません。削除は貪欲ではない必要があり(同じファイルに変更してはならない類似のデータがあります)、全体的な「パターン」が複数行であるため、私はそれを理解できませんでした。望ましい出力:

ワークフローは次のようになるはずです。

string_to_match を見つけ、前の最初の /* を見つけて削除し、次の最初の */ を削除します。

ソリューションが自動的に機能する場合は素晴らしいでしょう

バッシュアマチュアからの事前の感謝!私はSEDで成功しませんでした。AWK の解決策とばかげた説明も歓迎します。ご挨拶!

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

javascript - 単純な .* を実行するのはなぜですか? 非貪欲な正規表現は、一致の前に貪欲に追加の文字を含めますか?

私はこれに似た非常に単純な正規表現を持っています:

HOHO.*?_HO_

このテスト文字列で...

fiwgu_HOHO_HOHO_HOHOrgh_HOHO_feh_HOHO___HO_fbguyev

  • 私はそれがちょうど一致することを期待しています_HOHO___HO_(最短一致、貪欲ではない)
  • 代わりに一致し_HOHO_HOHO_HOHOrgh_HOHO_feh_HOHO___HO_ます (最長一致、貪欲に見えます)。

なんで?最短一致に一致させるにはどうすればよいですか?

を追加および削除しても?、同じ結果が得られます。

編集[^HOHO]-機能しない理由を示すより良いテスト文字列:fiwgu_HOHO_HOHO_HOHOrgh_HOHO_feh_HOHO_H_O_H_O_HO_fbguye


私が考えることができるのは、複数回一致している可能性があるということだけです-しかし、 の一致は1つしかないため、で終わる最短の一致を取得せず、残りを破棄する_HO_理由がわかりません。_HO_

「貪欲でない正規表現は貪欲に振る舞う」などのタイトルで見つけられるすべての質問を閲覧しましたが、それらにはすべて他の問題があるようです。