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

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

ruby - Ruby の「スキャン」メソッドを使用してキャプチャ グループをオプションにするにはどうすればよいですか?

私はこのような正規表現を持っています:

次のような文字列を処理したい:

{"Affinity":20,"DisplayName":"Moe Larry","Emails":[{"Address":"moelarry@gmail.com","Primary":true,"Type":{"Id":" HOME"}}],"FullName":{"FamilyName":"Larry","GivenName":"Moe","Unstructured":"Moe Larry"},"Groups":[{"id":"^Mine "}],"Id":"1234567890","MailsS​​ent":0,"Name":"Moe Larry","Phones":[{"Number":"555-999-6661","Type":{ "Id":"MOBILE"}}],"ProfileLink":""},{"Affinity":20,"DisplayName":"stoogesarefunny","Emails":[{"Address":"stoogesarefunny","Primary ":真実}]、"EvergreenPhoto":"/photos/private/adflk;jsd394u75430o8752380974321jtkasdljf8937489213749832654","Id":"834754hthbf83744823f","送信済みメール":0},{"アフィニティ":20,"@stooges"mail."@stooges" Emails":[{"Address":"stoogesarefunny@gmail.com","Primary":true}],"EvergreenPhoto":"/photos/private/asdfAJDKLJSFIOEJHLTHSJKLDF234987s897KJHSDFKJHDF89273473ASLKJDLSKJIFEIH","Id":"834754hthbf83744823","メールSf" 0,"プロフィールリンク":"stoogesarefunny@gmail.com","Emails":[{"Address":"stoogesarefunny@gmail.com","Primary":true}],"EvergreenPhoto":"/photos/private/asdfAJDKLJSFIOEJHLTHSJKLDF234987s897KJHSDFKJHDF89273473ASLKJDLSKJIFEIH","Id": "834754hthbf83744823f","MailsS​​ent":0,"ProfileLink":"stoogesarefunny@gmail.com","Emails":[{"Address":"stoogesarefunny@gmail.com","Primary":true}],"EvergreenPhoto":"/photos/private/asdfAJDKLJSFIOEJHLTHSJKLDF234987s897KJHSDFKJHDF89273473ASLKJDLSKJIFEIH","Id": "834754hthbf83744823f","MailsS​​ent":0,"ProfileLink":"https://profiles.google.com/stoogesarefunny "},{"Affinity":20,"DisplayName":"Shemp","FullName":{"GivenName":"Shemp","Unstructured":"Shemp"} ,"Groups":[{"id":"^Mine"}],"Id":"1234567890","MailsS​​ent":0,"Name":"Shemp","Phones":[{"Number": "+15553085671","Type":{"Id":"OTHER"}}]},{"Affinity":20,"DisplayName":"ClownFace","FullName":{"GivenName":"ClownFace", "Unstructured":"ClownFace"},"Groups":[{"id":"^Mine"}],"Id":"1234567890","MailsS​​ent":0,"名前":"ClownFace","電話":[{"番号":"+15556064040","タイプ":{"ID":"OTHER"}}]},

それは本当に醜いです、私は知っています。xml フィードが見つかればいいのですが、今のところそれはできません。

私が気にかけているのは、DisplayName、Groups、および Phones だけです。それらを抽出して配列の配列に保存する必要があります。グループと電話のキャプチャ グループは、すべての連絡先にあるわけではないため、オプションにする必要があります。しかし、私の正規表現は私に与えます:

明らかに、Shemp の連絡先データはすべて stogesarefunny@gmail.com のデータに組み込まれています。私の正規表現は、彼の表示名の前で停止して最初からやり直すのではなく、Shemps グループに到達するまでむさぼり食い続けるからです。ヘルプ?

PS: いいえ、これらすべてのグループを保存するつもりはありません。最終的には、何が起こっているのかを調査できるようにするためです。

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

.net - グループを正規表現と照合するための優先順位規則

次の.NET正規表現について考えてみます。

それは私が興味を持っている4つのグループを定義し、それらを別々に分析します。

ここで、この正規表現の入力文字列について考えてみます。

次のように一致させることができます。

そして、次のように一致させることも可能です。

正規表現エンジンがどのように優先するかが文書化されていますか、それともランダムですか?

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

java - Java パターンの繰り返し グループのキャプチャ

次の文字列があります

ストリングは拡張できますが、同じパターンで、両側に他のストリングがあります。たとえば、

2桁すべてをキャプチャしたい。

次の正規表現があります

しかし、この正規表現では、次のグループしか取得できません。

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

sql - SQLの検索と置換の正規表現のキャプチャグループの制限?

スプレッドシートのデータを SQL の挿入ステートメントに変換する必要があります。SSMS で検索と置換ツールを使用するためのほとんどの正規表現を作成しましたが、最後の置換で 9 番目の括弧で囲まれた項目を参照しようとすると問題が発生します。

元のレコードは次のとおりです。

そして、これが私が必要とするものです(今のところ):

許可される括弧内の項目の数に制限があるため、置換を 3 回実行する必要があります。最初にこれをPOCとして機能させることができれば、これはストアドプロシージャに機能する可能性があります。

これは最初に一致する式です:

そして置き換え:\10\2/0\3/\40\5/0\6/\7

これにより、月と日にゼロが追加され、少なくとも 2 文字になります。

次の一致では、日付がクエリで必要な形式に再フォーマットされます (日付フィールドを使用しないことについてのコメントはありません。これは、データベースのクライアント要件です)。

一致する表現:

そして置き換え:\1\4\(2,2)\(2,3)\5\8\(2,6)\(2,7)

最後に、最終的な一致により、insert ステートメントで使用される SQL ステートメントに結果が挿入されます。

一致する表現:

そして置き換え:select '\1','\2','\3','\4','\5','\6','\7','\8','\9'

最後の交換を除いてすべて機能します。何らかの理由で、\9 は一致からデータを取得していません。置換式全体を \9 に置き換えると、空白ができます。\8 を使用すると、N が得られます。括弧で囲まれた 8 番目の項目を削除して、9 番目の項目を 8 番目にすると、必要な 20120101 が返されます。

だから私の質問は、検索/置換と正規表現を使用する場合、SSMS / SQLは9つのタグ付き式を許可しますか? それとも、ここで何か不足していますか? 私はこれを行う他の方法があることを知っています。これを sproc またはアプリケーションに移動する前に、POC としてすばやく実行しようとしています。

ご協力ありがとうございます。-ピーター

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

javascript - JavascriptRegExp非キャプチャグループ

CSSセレクターをIDとクラスの配列に変換するための一連のRegExpsを作成しています。

たとえば、「#foo#bar」で['foo'、'bar']を返したいとします。

私はこれを達成しようとしてきました

ただし、キャプチャしないプレフィックス?:が#文字を無視する必要がある場合は、['#foo'、'#bar']を返します。

返された文字列をそれぞれスライスするよりも良い解決策はありますか?

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

java - REGEXP:キャプチャグループの後に続く

次のステートメントに一致する必要があります。

これらを一致させずに:

だから私はこの正規表現が機能するだろうと考えました:

しかし、そうではありません-そしてその理由はわかりません-これはキャプチャグループ(。*)が原因である可能性があると思いますので、*演算子を怠惰にすることで問題が解決すると思いました...しかし違います。この正規表現も機能しません:

誰かが私を解決策の方向に向けることができますか?

解決

(のように)最後にない 文を取得するには、 (author @Thorbear)を使用する必要があります。is hereHi there John Doe (the second)

また、途中にデータが含まれている文の場合(たとえばHi there John Doe (the second) is hereJohn Doe(2番目)が目的のデータである場合)、単純なグループ化で十分です。

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

javascript - 単一のキャプチャ グループ (複数のグループ) から一致の配列を返す JavaScript 正規表現後方参照

これは不可能であるという答えを見つけるために夜を過ごした後、私は回避策を開発しました-しかし、誰かがより良い方法を知っているなら、私はそれを聞きたいです...

私はコードを何度も繰り返しましたが、以下は単なる考えにすぎません。ある時点で、match() が機能するためにグローバル フラグを使用していたと思いますが、それが今必要であったかどうかは思い出せません。

この簡略化されたコードのアイデアは、オプションのグループ 1 であり、量が指定されておらず、@abc、@def、および @ghi に一致します。1 つまたは複数のアルファベット文字のみがキャプチャされます。グループ 2 は、& 記号の一致を除いて同じです。また、文字列の最初と最後に固定する必要があります。

両方のグループのすべての一致を後方参照できるようにしたい、つまり:

私の仲間は、これが .net でうまく機能すると言っています。

(さらに、どちらかのグループをオプションにすることは、グローバル フラグを設定する場合と同様に混乱を招きます)


以下は、問題の部分全体をキャプチャし、自分で配列を作成して、私がたどり着いた解決策です。

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

python - Pythonで正規表現をキャプチャする

Pythonの正規表現を使用して、</html>タグの後のすべてを取得し、文字列に入れたいと思います。そこで、Pythonでそれを行う方法を理解しようとしましたが、それを機能させることができませんでした。誰かがこのばかげた単純なタスクを実行する方法を私に説明できますか?

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

java - 正規表現はすべてのグループをキャプチャできません

java.util.regex(jdk 1.6)を使用201210(\d{5,5})Testすると、サブジェクト文字列に適用される正規表現は、次のコードを前提として、(パターン)をキャプチャする20121000002Testだけで、キャプチャgroup(0)しません。group(1)00002

201210(\d{5,5})Test(\d{1,10})不思議なことに、サブジェクト文字列に適用されるような別の同様の正規表現は、20121000002Test0000000099グループ0と1をキャプチャしますが、グループ2はキャプチャしません。

それどころか、JavaScriptのRegExpオブジェクトを使用することにより、まったく同じサブジェクト文字列に適用されたまったく同じ正規表現が、予想どおりにすべてのグループをキャプチャします。これらのオンラインテスターを使用して、この事実を自分で確認し、再確認しました。

私はここで何か間違ったことをしていますか?それとも、Javaの正規表現ライブラリが本当にひどいのですか?

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

.net - 正規表現を使用して北米の郵便番号を抽出する

北米の郵便番号を検証するために使用する次の正規表現があります。

参考までに、特定の位置で特定の文字を確認することに関しては、より正確になる可能性があることを理解しています.

私がやりたいのは、この同じ検証定数を使用して、郵便番号も次の形式で抽出することです。

上記の正規表現がそれに近づきます。すべてのキャプチャ グループ (ルートを除く) を連結すると、求める結果が得られます。たとえば、米国のコードはグループ 1 でキャプチャされ、カナダのコードは 2 + 3 でキャプチャされます。

これを行うより良い方法はありますか?または、すべてのサブグループを連結することが正規表現ライブラリの機能であると想定されているかもしれません。(ちなみにこれはC#.NETです)