問題タブ [capturing-group]
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.
c# - レクサーとして使用するときにどのグループが一致したかを知る方法は?
単純なレクサーとして .NET Regex を使用しています。
照合後、トークンの種類を表すすべての名前付きグループを反復処理し、実際に一致したものを見つけることで、各トークンの種類を特定できます。ただし、これは少し遅くて不器用に思えます。.NET Regex API を使用して、一致するすべてのグループを見つけるより良い方法はありますか?
javascript - String#match() キャプチャ グループでの奇妙な動作
問題:文字列があります。例: 「to」接頭辞なし"to see to be to read"
で 3 つの動詞をキャプチャしたいのですが、この場合はとです。be
see
read
Regex 101 では、この非常に単純な正規表現を試してみましたが、問題は解決しました。
正規表現:/to (\w+)/g
結果: ['be', 'see', 'read']
好奇心のために、正の先読みを使用してこれを別の regexにしましたが、結果は同じでした。
正規表現:/(?=to \w+)\w+ (\w+)/g
結果: ['be', 'see', 'read']
わかった。奇妙なことに、ブラウザ コンソール(Chrome または Firefox) でこの正規表現を実行すると、結果が異なります。次の 2 つの試行では、同じ結果が得られます。プレフィックスを含む3 つのグループすべてです。to
ここで何か不足していますか、それともバグを踏んでいますか?
免責事項:これは宿題ではありません。より大きな問題について検証しているだけです。私は正規表現の専門家ではありませんが、正規表現について少し知っています。
編集: Regex101 にだまされたと思います。それが私に与えたコードサンプルはString#match()
アプローチを示しましたが、この関数は結果のグループに応じて正規表現グループを除外しません。RegExp#exec()
マッチをループするのが一番です!
java - Java 正規表現: 番号が事前にわからない場合に、特定のコンテキストでキャプチャ グループを逆参照する方法
序論として、私は正規表現で問題を解決することについての古いことわざを認識しており、正規表現で XML を処理する際の注意事項についても認識しています。でも、ちょっと我慢してください…
文字のグループで正規表現検索と置換を実行しようとしています。このグループがどのくらいの頻度で一致するかは事前にわかりませんが、特定のコンテキストのみで検索したいと考えています。
例: 次の文字列があり、 を検索して置換し"**ab**df**ab**sdf**ab**fdsa**ab**bb"
たい場合、次の正規表現を使用するとうまくいきます。"ab"
"@ab@"
検索正規表現:
交換:
予想通り、全部で 4 つのマッチが得られました。各一致内で、グループ ID は同じであるため、後方参照 ($1、$2 ...) も正常に機能します。
ただし、特定のコンテキストを文字列に追加すると、上記の正規表現は失敗します。
検索文字列:
検索正規表現:
これにより、最初の一致のみが検索されます。しかし、元の正規表現に非キャプチャ グループを追加しても機能しません ( "<context>(?:(.*?)(ab)(.*?))*</context>"
)。
私が望むのは、最初の検索(コンテキストなし)のような一致のリストです。これにより、各一致内でグループ ID が同じになります。
これをどのように達成できるか考えていますか?
regex - PCRE 正規表現の別のキャプチャ グループに基づくキャプチャ グループの名前
私のプレーンテキストが
キーと値のペアをキャプチャしたいのですが、対応するキーに基づいて値キャプチャ グループの名前を付けたいと思います。たとえば、正規表現をハードコードすると、次のようになります。
デモ: http://regex101.com/r/wC8nF5
ただし、キーの名前が正確にわからないため、ハードコーディングしたくありません。そのため、キャプチャ グループの名前を変更できずに、このように近づきました
デモ: http://regex101.com/r/hV8oZ2
キャプチャ グループの名前には単語文字のみを使用できることは理解していますが (使用できる特殊文字は のみです_
)、すべてのキー名が単語文字であると仮定すると、PCRE の別のキャプチャ グループに基づいてキャプチャ グループに名前を付ける正規表現は何ですか?
javascript - グループの捕捉効率 (?: => work(?:\s+)?group VERSUS work(\s+)?group
両方の表現が機能します。
スペースが改行 (\s+) である可能性があることを考慮して、workgroup
ORをキャプチャする必要がありますか?work group
ただし、最初の式には非キャプチャ グループがあります (?:
そして、Regex のパフォーマンス/高速出力でそれが悪いか良いか疑問に思っています。つまり、パフォーマンスの観点から、最高の式は何ですか?
java - Java Regex: キャプチャ グループに置き換えます
次のような文字列があります。
私は取得したい102457921
。どうすれば正規表現でそれを達成できますか?
私が試してみました:
しかし、うまくいきません。ヒントはありますか?