問題タブ [reluctant-quantifiers]

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 に答える
1344 参照

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

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

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

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

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

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

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

regex - 正規表現について混乱している

"${"式 で始まり、で終わる"}"式を一致させたい${foo} and ${bar}

もちろん、正規表現.*\$\{.+\}.*は式全体に一致します。

.*\$\{.+?\}.*私の理解では、消極的な量指定子に変更すると問題が解決するということでしたが、式全体にも一致することがわかりました。

私は何が欠けていますか?

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

java - Java 正規表現: UNGREEDY フラグ

汎用のテキスト処理ツールであるTexyを移植したいと思います。、PHPからJavaへ。

このツールは、 を使用して、どこでも貪欲でないマッチングを行いpreg_match_all("/.../U")ます。だから私はいくつかのUNGREEDYフラグを持つライブラリを探しています。

構文を使用できることはわかっ.*?ていますが、実際には多くの正規表現を上書きして、更新されたバージョンごとに確認する必要があります。

確認しました

  • ORO - 放棄されたようです
  • ジャカルタ正規表現 - サポートなし
  • java.util.regex - サポートなし

そのようなライブラリはありますか?

ありがとう、オンドラ

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

regex - 正規表現では、それは怠惰または貪欲ではないと呼ばれていますか?

私はもともとそれを貪欲ではないと聞いた。それから、「ウェブ上の」参照で、私はそれが怠惰と呼ばれるのを見ました。どっち?

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

regex - レイジーリピート数量詞を使用しないためのより良い正規表現の記述

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

レイジーリピート量指定子を使用するため、長い文字列(500を超えるオプションがある)の場合、100,000回を超えてバックトラックし、失敗します。遅延反復数量詞を使用しない、より良い正規表現を見つけるのを手伝ってください

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

java - 正規表現を正しくするためのサポートが必要です

行上のパターンの複数のエントリを見つけるために正規表現を取得しようとしています。注:私は約1時間正規表現を使用しています... = /

例えば:

2回一致する必要があります:

答えは、貪欲vs嫌悪vs所有格の適切な習得にあると思いますが、それを機能させることができないようです...

私は近くにいると思います。これまでに作成した正規表現の文字列は次のとおりです。

しかし、正規表現マッチャーは1つの一致、つまり文字列全体を返します...

以下のコードに(コンパイル可能な)Java正規表現テストハーネスがあります。これが、そのプログラムを使用してこれを取得するための最近の(無駄な)試みです。出力はかなり直感的であるはずです。

これがJavaです:

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

java - 消極的なマッチングのためのJava正規表現

次の問題の式を見つける必要があります。

私が取得したいもの:"{ \"questionID\" :\"4\", \"question\":\"What is your favourite hobby?\",\"answer\" :\"*******\"},{ \"questionID\" :\"5\", \"question\" :\"What was the name of the first company you worked at?\",\"answer\" :\"******\"}";

私がしようとしていること:

私が得ているもの:

貪欲な動作のため、最初のグループは両方の「回答」部分をキャッチしますが、十分に見つけたら停止し、置換を実行してから、さらに探し続けます。

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

java - reluctunt quantifier の動作の理由 ?? Java正規表現で

?が貪欲な量指定子であり、それに気が進まないことを私は知って??います。次のように使用すると、常に空の出力が得られますか? それは常に左から右に動作するためですか(最初にゼロの出現を見てから一致した出現を見てください)、または別のものですか?

出力:

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

php - 大きな正規表現での遅延評価の使用 (.*? だけでなく)

次の正規表現を使用します。

次の結果が得られます (黄色のボックスは一致を示します)。

崇高なテキスト 2

生のテキスト: http://pastebin.com/vSi0mLGv

下の 2 つのセクションは正しいです。以下を含むすべてのセクションが必要です。<<<NOTICE>>> Non-Prod Server: Using HTTP not HTTP/S

ただし、上部のセクションには正しい文字列 (下部の 2 つと同様) が含まれていますが、必要のない別のチャンクも含まれています。

これは正規表現が貪欲であることに帰着することを知っていますが、それが<br />正しい方法である場合でも、 の遅延評価を行うにはどうすればよいですか。私は試してみましたが(<br />)*?、他の人は役に立ちませんでした。


その他の情報: 私はSublime Text 2を使用しており、誰かが画像を再作成したい場合は正規表現検索を実行しています。

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

java - 正規表現での消極的な量指定子の使用

これまでのところ、正規表現で消極的な量指定子を使用したことがなく、サイトのいくつかの質問を見て、その機能とその使用法を理解しています。同様の質問は非常に説明的ですが、 Javaチュートリアルの例とどのように関連付けられているかまだ理解できません。私は、消極的な数指定子が一致するケースが可能な限り少ないことを理解しています。では、正規表現が

文字列で

"xfoo"および"xxxxxxfoo"?の 2 つの一致を返します。

また、所有量指定子の説明も不十分なので、誰かが正規表現の理由を説明できますか

同じ文字列で何にも一致しませんか?