問題タブ [regex-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.
regex - 正規表現がデフォルトで貪欲なのはなぜですか?
これは、正規表現を書く初心者にとって大きな混乱の原因であり、隠れたパフォーマンスの問題を引き起こす可能性があり、典型的なユースケースは貪欲ではないように思われます。
これは単にレガシーの理由(それが最初に行われた方法であり、すべての実装がそれをコピーする方法でした)ですか、それとも理由がありますか?
regex - 正規表現のコンテキストで「怠惰」と「貪欲」は何を意味しますか?
これら2つの用語は、わかりやすい方法で何ですか?
regex - Xcodeの怠惰な正規表現
私はこのようなものを置き換えようとしています:
と:
Xcodeで。したがって、これらはソースファイルです...正規表現は次のようになります。
しかし、私はこれを怠惰にする必要があります。それ以外の場合、。+)は、最初の括弧ではなく最後の括弧に一致します(たとえば、最後の両方の括弧は、次の文字列を指定すると1つの括弧に置き換えられます: "NSLog(@"%@ "、NSSomeFunction(@" hey "、@ "笑"))" )。
このような怠惰な検索を行う方法は?修飾子/U(貪欲でない)を使用して、真珠でこれを行うことができると思います。Xcodeはそれをサポートしていないようですが。
regex - 正規表現は怠惰な振る舞いをしている、貪欲であるべき
デフォルトでは、私の正規表現は私が望む貪欲な動作を示すと思いましたが、次のコードにはありません:
出力:
単純にキーワードを長さの降順で並べ替えれば、この小さな例でも機能することがわかりましたが、
- これが期待どおりに機能しない理由を理解したいのですが、
- 私が取り組んでいる実際のプロジェクトでは、正規表現にさらに多くの単語が含まれており、それらをアルファベット順に保つことが重要です。
だから私の質問は、なぜこれが怠惰なのか、どうすれば修正できるのか?
regex - 貪欲でない正規表現の一致、JavaScriptおよびASP
欲張りでない試合をする必要があり、誰かが私を助けてくれることを願っています。私は次のものを持っています、そして私はJavaScriptとASPを使用しています
上記の一致は、hrefタグの最初の開始と一致します。フォルダの一部である最後のhrefとのみ一致する必要があり/pdf/
ます。
何か案は ?
javascript - 正規表現を欲張りでないものにする方法は?
私はjQueryを使用しています。特殊文字(開始と終了)のブロックを含む文字列があります。その特殊文字ブロックからテキストを取得したい。文字列内検索に正規表現オブジェクトを使用しました。しかし、2つ以上の特殊文字がある場合に複数の結果を見つけるようにjQueryに指示するにはどうすればよいですか?
私のHTML:
と私のJavaScriptコード:
私の結果は次のとおりです。しかし、これは私が望む結果ではありません:(。1回目の[テキスト]と2回目の[デモ]を取得する方法は?
インターネットで情報を検索した後、仕事を終えたところです^^。私は次のようなコードを作成します:
- 私の結果は次のとおりです:[|cơthử|nghiệm|]、[| test2|đâylàtestlần2|] これは正しいです! 。しかし、私はこれを本当に理解していません。私の理由に答えてもらえますか?
regex - 欲張りでない修飾子または先読みを使用する方が良いですか?
のインスタンスを検索するために、おそらく大きなテキストブロックがあります[[...]]
。ここでは、...
他のブラケットを含め、何でもかまいません(ただし、ネストすることはできません。afterの最初のインスタンスは一致]]
を[[
終了します)。
このテキストに一致する2つの方法を考えることができます:
- 欲張りでない修飾子の使用:
/\[\[.+?\]\]/
- 先読みの使用:
/\[\[(?:(?!\]\]).)+\]\]/
パフォーマンスの観点から、1つの選択肢は本質的に他の選択肢よりも優れていますか(最初の選択肢の方がおそらく読みやすいと思います)?欲張りでない修飾子を使用しない方がよいと読んだことを思い出しますが、そのためのソースを今は見つけることができません。
regex - grepで貪欲でない一致を行う方法は?
最短の一致をgrepしたいので、パターンは次のようになります。
...は任意の文字を意味し、入力は複数行です。
c# - 正規表現が貪欲すぎる
IMDb サウンドトラック データ ファイルのデータと一致する正規表現を作成しています。私の正規表現はほとんど機能していますが、名前付きグループにあまりにも多くのテキストを丸呑みしている場所があります。たとえば、次の正規表現を使用します。
実行者グループには、文字列' (qv)
と実行者の名前が含まれます。残念ながら、レコードのフォーマットが一貫していないため、一部のパフォーマーの名前は一重引用符で囲まれていますが、そうでない人もいます。これは、正規表現に関する限り、オプションであることを意味します。
?>
グループ指定子 を使用して、最後のグループを貪欲なグループとしてマークしようとしましたが、これは結果に影響を与えないように見えました。
実行者グループを変更して文字の狭い範囲に一致させることで結果を改善できますが、名前を正しく解析する可能性が低くなります。さらに、アポストロフィ文字を単に除外すると、たとえば、バイオハザード アポカリプスで取り上げられたRun For Your Lifeを演奏した Elia's Lonely Friends Band など、アポストロフィを含むバンド名を解析できなくなります。
更新: 要求に応じて、正規表現が一致する必要がある入力行の例を次に示します。既存の正規表現では処理できない他の形式も表示されます。
regex - 貪欲ではない正規表現
新しい状況が発生するまで完全に機能していた次の正規表現があります
基本的に、これは URL に対して使用され、U= または URL= の後のすべてを取得し、URL 一致でそれを返します。
したがって、次の場合
http://localhost?a=b&u=http://otherhost?foo=bar
URL = http://otherhost?foo=bar
残念ながら、奇妙なケースが出てきました
http://localhost?a=b&u=http://otherhost?foo=bar&url=http://someotherhost
理想的には、URL を " http://otherhost?foo=bar&url=http://someotherhost " にしたいのですが、代わりに " http://someotherhost "だけにします。
編集:これで修正されたと思います...きれいではありませんが