問題タブ [capture-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 に答える
1315 参照

java - 非キャプチャ グループは冗長ですか?

オプションの非キャプチャ グループは冗長ですか?

次の正規表現です:

次の正規表現と意味的に同等ですか?

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

c# - C#での正規表現 非キャプチャ グループではなくキャプチャ グループのみを置き換える方法

C# を使用して Visual Studios 2013 Express で正規表現を作成しています。単語と !@#$%^&*()_- を含むすべての単一文字列を一重引用符で囲もうとしています:

  • また
  • いいえ
  • 空の()
  • 空ではない()
  • 現在の日付()
  • すでに一重引用符で囲まれている文字列。

これが私の正規表現とその機能のサンプルです: https://regex101.com/r/nI1qP0/1

キャプチャ グループのみを一重引用符で囲み、非キャプチャ グループはそのままにしておきます。これはルックアラウンドで実行できることは知っていますが、方法がわかりません。

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

python - Python regex 複数のオプションのキャプチャ グループ

ケースを無視して複数のグループをキャプチャしようとしましたが、しばらく進行しません。私がチェックしている文字列には複数の形式があります。たとえば、いくつかの形式があります

したがって、一般的なルールは次のようになります。

  • タイトル タグのメイン タイトルには、数字や特殊文字を含むすべての文字を含めることができます

  • URL は標準の URL ですが、(.*) 式で問題なくキャプチャできます

  • Ch。一般的にはオプションです

  • 文字列に Vol. が含まれている場合、Ch. 必須になる

私の現在の正規表現は次のようになります。

試してキャプチャしたい:

  • 後ろの数字を含む Vol と Ch のタイトルタグ

  • Vol と Ch のないタイトル (および Vol と Ch の後ろの数字なし)

  • Chの後ろの数字。

正規表現を分割した方が良いでしょうか、パフォーマンスのために何が良いでしょうか (数千の文字列を実行しているので、パフォーマンスを維持したいと思います)?

よろしくバウムチェン

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

regex - 複数のバインディング オペレータでの Perl キャプチャ変数

バインディング式以外でキャプチャ グループを使用し、すべてのグループをキャプチャする方法はありますか?

これは、最後の 3 つのグループ ( $1$2、および) のみをキャプチャし$3ます。

Avinash Raj が提案したように、期待される出力を編集します。

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

java - JAVAで後方参照を使用して正規表現をキャプチャする再帰グループ

正規表現内のグループへの後方参照も使用して、文字列で複数のグループを再帰的にキャプチャしようとしています。Pattern と Matcher と "while(matcher.find())" ループを使用していますが、すべてのインスタンスではなく、最後のインスタンスのみをキャプチャしています。私の場合、可能なタグは <sm>、<po>、<pof>、<pos>、<poi>、<pol>、<poif>、<poil> のみです。これらはフォーマット タグであるため、キャプチャする必要があります。

  1. タグの外側にある任意のテキスト (「通常の」テキストとして書式設定できるようにするため、あるグループのタグの前のテキストをキャプチャし、別のグループでタグ自体をキャプチャし、繰り返し実行することでこれを行っています。元の文字列からキャプチャされたすべてのものを削除します; 最後にテキストが残っている場合は、それを「通常の」テキストとしてフォーマットします)
  2. タグ内のテキストをどのようにフォーマットする必要があるかを知るためのタグの「名前」
  3. タグ名とそれに関連付けられたルールに従ってフォーマットされるタグのテキスト コンテンツ

ここに私のサンプルコードがあります:

System.out.println はコンソールに 1 回だけ出力され、次の結果が得られます。

グループ 3 は無視されます。有用なグループは 1、2、および 4 だけです (グループ 3 はグループ 2 の一部です)。前の「pof」、「poi」、および「po」タグをキャプチャしないのに、これが最後のタグ インスタンス「poil」のみをキャプチャするのはなぜですか?

私が見たい出力は次のようになります。

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

python - Python 正規表現オプションのキャプチャ グループまたは lastindex

Pythonを使用して、セクションとサブセクションのファイルを1行ずつ検索しています。

セクションは 0 ~ 2 個のスペースで始まり、その後に 3 つのアスタリスクが続きます。サブセクションには 2 つ以上の空白とアスタリスクが続きます。

「***」なしでセクション/サブセクションを書き出します。現在(re.subを使用)。

質問 1 : セクション/サブセクション名にキャプチャ グループとしてアクセスできる、キャプチャ グループを含む python 正規表現はありますか?

質問 2 : 正規表現グループを使用すると、セクションまたはサブセクションをどのように識別できますか? (おそらく、match.group 内の /content の数に基づいて)?

例 (非稼働):

以前の試み 別々の正規表現と if ステートメントを使用してセクションまたはサブセクションをキャプチャできましたが、すべてを一度に実行したいと考えています。以下の行のようなもの。2番目のグループの貪欲さに問題があります。

貪欲またはオプションのグループを連携させることができないようです。 http://pythex.org/は、この時点で非常に役に立ちました。

また、アスタリスク '(*{3})' をキャプチャして、見つかったグループの数に基づいてセクションまたはサブセクションかどうかを判断しようとしました。

ありがとう 多分私はこれで完全に間違っています。どんな助けでも大歓迎です。

最新の更新 Pythex、回答、およびその他の調査で遊んでいます。私は今、単語をキャプチャすることに多くの時間を費やしています:

アスタリスクの一致数を数えて「レベル」を決定します。私はまだ2つから3つの「グループ」に一致する単一の正規表現を探しています。存在しない場合があります。

ありがとう。

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

java - 間に不明な数の繰り返されるグループがあるテキストをキャプチャする正規表現

次のテキストの「ダイニング:」に続く数字を解析しようとしています。したがって、「666」が返されます。

次のようなものを使用すると(?:\bDining:\s)(.*\b)、MAIN の下で最初に発生したものがキャプチャされます。したがって、正規表現で指定しようとしてSECOND LEVELおり、その後に、改行、複数のスペース、および任意のテキストの繰り返しパターンが続きますDining:このデモは、私が遭遇した 2 つの問題を示しています。使用される正規表現は次のとおりです。(?:\bSECOND\sLEVEL(\n\s+.*)*Dining:)(.*\b)

  1. を含む最後の行を削除するまで、 「壊滅的なバックトラッキング」エラーが表示されますLaundry: 1。これは、マッチ数が多すぎることが原因ですか?
  2. その行を削除すると、正規表現は .. の下の最後の一致のみをキャプチャし、 の下OTHER LEVELの一致ではなく '2' を返しますSECOND LEVEL

Dining:下に存在しない場合があるSECOND LEVELため、何も返されません。

SECOND LEVELの番号のみをキャプチャし、Dining:存在しない場合は何も返さない正規表現は何ですか? ストレートアップの正規表現が推奨され、可能であれば Java でのループはありません。ありがとう