問題タブ [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.

0 投票する
6 に答える
991 参照

regex - Regex における貪欲な文字クラスと否定された文字クラスの問題

このような非常に大きなファイルがあります (以下を参照)。私はそれに使用する正規表現の2つの基本的な選択肢があります(他にもあるかもしれませんが、GreedyとNegated Char Classを実際に比較しようとしています)メソッド。

注: \d の周りの括弧を外したらどうなるでしょうか?

現在、+ はバックトラッキングを強制する貪欲ですが、Negated Char クラスでは文字ごとの比較が必要です。どちらがより効率的ですか? ファイルが非常に大きいと仮定すると、ファイルの長さのためにプロセッサ使用率のわずかな違いが誇張されます。

あなたがそれに答えたので、否定された Char クラスが非常に大きく、たとえば 18 の異なる文字だったらどうしますか? それはあなたの答えを変えるでしょうか?

ありがとう。

ftp: 1117 バイト
ftp: 5696 バイト
ftp: 3207 バイト
ftp: 5696 バイト
ftp: 7200 バイト

0 投票する
6 に答える
1283 参照

regex - 貪欲な正規表現の問題

これは簡単だと思いますが、たくさんのバリエーションを試しましたが、必要なものにまだ一致していません. 物事は貪欲すぎて、貪欲であることを止めることはできません.

テキストを考えると:

私はただ選択したい:

次の正規表現を試しました

皆さんありがとう。

0 投票する
5 に答える
9998 参照

regex - 正規表現 nongreedy は貪欲です

私は次のテキストを持っています

私が読んでいるこの本によると、?任意の量指定子の後に続くと、貪欲ではなくなります。

私の正規表現to*?nはまだ返されてtooooooooooooonいます。

返すtonべきじゃないですか。

理由はありますか?

0 投票する
6 に答える
6765 参照

regex - 貪欲な量指定子とあまり一致しないように正規表現を修正するにはどうすればよいですか?

次の行があります。

単純な正規表現を使用してこれを解析します。

しかし ; 最後に物事を台無しにし、その理由がわかりません。貪欲なオペレーターは「すべて」を処理するべきではありませんか?

0 投票する
6 に答える
1344 参照

regex - 正規表現: Lazy の方が悪いですか?

私はいつもこのような正規表現を書いてきました

しかし、私はこの怠惰なことについて学び、このように書くことができることを知りました

この2番目のアプローチを使用することに不利な点はありますか? 正規表現は間違いなくよりコンパクトです(SOでもより適切に解析されます)。

編集:ここには2つの最良の答えがあり、式の2つの重要な違いを指摘しています。ysthの答えは、貪欲でない/怠惰なものの弱点を指摘しており、ハイパーリンク自体にAタグの他の属性が含まれる可能性があります(間違いなく良くありません)。Rob Kennedy は貪欲な例の弱点を指摘しています。アンカー テキストには他のタグを含めることはできません (すべてのアンカー テキストを取得するわけではないため、間違いなく問題ありません)。同じように見える遅延ソリューションと非遅延ソリューションは、おそらく意味的に同等ではありません。

編集:3番目に良い答えは、式の相対速度に関するAlan Mによるものです。当分の間、私は彼をベストアンサーとしてマークし、人々が彼により多くのポイントを与えるようにします:)

0 投票する
6 に答える
1167 参照

regex - 怠惰、貪欲、または何?決定的な正規表現リファレンスを探しています

最近、Webのどこかで、貪欲なマッチングと怠惰なマッチング*の両方とは異なる、貪欲の「第3の方法」を説明する正規表現のリファレンスを見つけました。(.*)(.*?)

私は今、SO、グーグル、さらにはブラウザの履歴を検索しようとしましたが、役に立ちませんでした。

誰かが私が見たものをよく推測できますか?


明確化:それは私にとって新しい構成(のようなもの.*+)を指し、それはその名前さえ持っていたと私は信じています(「受動的に貪欲」のようなものですが、おそらくそうではありません)。


*「ウェブ上のどこか」が「バベルの図書館」や「マンデルブロ集合」と同じくらい役立つことを感謝しますが、助けてみてください

0 投票する
5 に答える
6941 参照

regex - 欲張りでないPerl正規表現が何にも一致しないのはなぜですか?

私はPerlREをある程度理解していると思いましたが、これは私を困惑させています。

プリント

キャプチャされ
た一致'

エンディングだけで一致しているようで、何もキャプチャされていません。
私はそれが全体に一致することを期待していました、またはそれが完全に貪欲でない場合は、まったく何もありません(すべてがオプションの一致があるため)。
これは行動の合間に私を困惑させます、誰かが何が起こっているのか説明できますか?

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

regex - 正規表現が 3000 行の XML ファイルを完成させるのが非常に遅いのはなぜですか?

Regex が 3000 行の XML ファイルを完成させるのは非常に遅いことに気付きました [1]:

私は常々、正規表現は効率的だと思っていました。正規表現を完了するのになぜそんなに時間がかかるのですか?

[1] VIM で A から B まで繰り返し一致させるにはどうすればよいですか?

0 投票する
7 に答える
135970 参照

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

の代わりにpython が一致する"(.*)"場合、そのような python 正規表現を作成するにはどうすればよいですか?"a (b) c (d) e""b""b) c (d"

"[^)]"の代わりに使用できることはわかっています"."が、正規表現を少しきれいに保つ、より一般的なソリューションを探しています。Pythonに「ねえ、これをできるだけ早く合わせてください」と伝える方法はありますか?

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

regex - VBScriptRegExpは貪欲ではありません

私は、SQLステートメントを基本的な部分に分割するための単純なSQLパーサーを作成しようとしています。ただし、ネストされたクエリに問題があります。例は最もよく説明します:

ここでは、where_partに「idin(select customer_id from Orders where 1 = 1)」を含め、everything_elseに「select*fromCustomers」を含めます。つまり、2番目(。*)はできるだけ貪欲に、最初は無私無欲にしたいと思います。言い換えれば、everything_elseにwhereが含まれないようにする必要があります。

ただし、everything_else = "select * from Customers where id in(select customer_id from Orders" and where_part = "1 = 1)"を取得します。

面倒な非正規表現の文字列解析に頼らずに、これを修正するにはどうすればよいですか?