問題タブ [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 投票する
3 に答える
5589 参照

java - Java Regex、カンマ区切りの値でグループをキャプチャ

InputString : 兵士には打撲傷、傷、跡、脱臼、またはその他の負傷がある場合があります。

ExpectedOutput :
あざ
傷跡 脱臼
跡 けが

試行された一般化されたパターン:

p>

パターンは、次のような他の入力文字列と一致できる必要があります

上記の一般化されたパターンを試すと、出力は次のようになります。

"(?:(\s)?,(\s)?(\w+?))*" のキャプチャ グループに問題があります。キャプチャ グループにはもう 1 つのオカレンスがあります..しかし、それは「転位」のみを返します。「マーク」と「脱臼:むさぼり食います。

正しいパターンとは何か、どこが間違っているのか教えてください。この質問はこの質問に最も近いものですが、その解決策は役に立ちませんでした。

ありがとう。

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

c# - オプションの部分を持つ正規表現は後方参照を作成しません

テキスト行の末尾にあるオプションのタグに一致させたい。

入力テキストの例:

中括弧の部分を一致させ、それへの後方参照を作成したいと思います。

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

(やや簡略化されていますが、タグの前の部分も一致しています):

行は (タグの有無にかかわらず) 一致しますが、タグへの後方参照は作成されません。

「?」を削除すると 文字なので、正規表現は次のとおりです。

タグへの後方参照を作成しますが、タグのない行とは一致しません。

http://www.regular-expressions.info/refadv.htmlから、オプションの演算子は後方参照に影響しないことがわかりました。

丸かっこは、それらの間の正規表現をグループ化します。それらは、後方参照で再利用できる内部の正規表現に一致するテキストをキャプチャし、グループ化された正規表現全体に正規表現演算子を適用できるようにします。

しかし、何かを誤解しているに違いありません。

タグ部分をオプションにして、存在する場合に後方参照を作成するにはどうすればよいですか?

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

java - 正規表現を使用して部分文字列を保存する

私はJava(またはその点については他の言語)の正規表現に不慣れで、それらを使用して検索を行いたいと考えています。どうすればいいか分からない難しい部分は、一致する文字列内の何かを置き換えることです。

たとえば、探している行が

その行を見つける正規表現を書くことはできますが、「もの」という言葉が何であるかを見つけることは(行によって異なる場合があるため)、私の問題です。その単語を別のものに置き換えるか、変数に保存して後で使用することができます。Java の正規表現エンジンを使用してこれを行う簡単な方法はありますか?

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

.net - *演算子と+演算子が一致する繰り返しの数をカウントできる正規表現フレーバーはありますか?

*+演算子が一致する繰り返しの数をカウントできる正規表現フレーバーはありますか?特に、.NETプラットフォームで可能かどうかを知りたいです。

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

regex - Scalaregexという名前のキャプチャグループ

scala.util.matching.Regex trait MatchDataで、グループ名がサポートされていることがわかりました。これは( Regex Named Capturing Groups)に関連していると思いました。

しかし、私が理解しているように、 Javaはバージョン7までグループ名をサポートしていないため( ref)、Scalaバージョン2.8.0(Java HotSpot(TM)64ビットサーバーVM、Java 1.6)では次の例外が発生します。

では、問題はScalaでサポートされているNamed Capturing Groupsですか?もしそうなら、そこに例はありますか?

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

regex - 正規表現を使用した Scala キャプチャ グループ

このコードがあるとしましょう:

findAllInのみを返すと思っていまし483たが、代わりに が返されtwo483threeました。unapplyその部分だけを抽出するために使用できることはわかっていますが、次のような文字列全体のパターンが必要です。

java.utilクラスを直接使用せず、unapply を使用せずに、これを達成する別の方法はありますか?

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

java - キャプチャおよび(thisPartOnly)同じグループ

次の入力があるとしましょう。

次の正規表現もあります。

これで、2つの一致が得られます(rubular.comで見られるように):

  • <amy>一致し、\1キャプチャしamy\2失敗します
  • (bob)一致し、\2キャプチャしbob\1失敗します

この正規表現は、私たちが望むことのほとんどを実行します。

  • 開閉ブラケットと適切に一致します(つまり、混合なし)
  • 興味のある部分をキャプチャします

ただし、いくつかの欠点があります。

  • キャプチャパターン(つまり「メイン」部分)が繰り返されます
    • この場合のみ\w+ですが、一般的に言えば、これは非常に複雑になる可能性があります。
      • 後方参照が含まれる場合は、代替ごとに番号を付け直す必要があります。
      • 繰り返しはメンテナンスを悪夢にします!(変更された場合はどうなりますか?)
  • グループは本質的に複製されます
    • どの代替一致に応じて、異なるグループにクエリを実行する必要があります
      • それは唯一\1または\2この場合ですが、一般的に「メイン」部分は独自のキャプチャグループを持つことができます!
    • これは不便であるだけでなく、これが実行できない場合もあります(たとえば、1つのグループのみのクエリに制限されているカスタム正規表現フレームワークを使用している場合)。
  • {...}[...]なども一致させたい場合、状況は急速に悪化します。

したがって、問題は明らかです。「メイン」パターンを繰り返さずにこれを行うにはどうすればよいでしょうか。

注:ほとんどの場合、私はjava.util.regexフレーバーに興味がありますが、他のフレーバーも歓迎します。


付録

このセクションには何も新しいことはありません。上記の問題を例で示しているだけです。

上記の例を次のステップに移しましょう。これらを一致させたいと思います。

しかし、これらではありません:

別の手法を使用すると、次のように機能します(rubular.comで見られるように)。

上で説明したように:

  • メインパターンを単純に繰り返すことはできません。後方参照の番号を付け直す必要があります
  • 繰り返しは、それが変更された場合のメンテナンスの悪夢も意味します
  • どの代替一致に応じて、、、またはのいずれかをクエリする必要が\1 \2あり\3 \4ます\5 \6
0 投票する
3 に答える
191 参照

javascript - 正規表現で何が間違っているのですか?

「RioGrandeDoLeste」を次の場所からキャプチャしようとしています。

を使用して

私は何が間違っているのですか?

アップデート:

2つの質問が残っています:

1)(document)を検索しても結果は得られませんでしたが、(document.body.innerHTML)に変更すると機能しました。何故ですか?

2)次のように変更する必要がありました:myregexp.exec(document.body.innerHTML)[1] ; 私が欲しいものを手に入れるために、そうでなければそれは私にを含むいくつかの結果を与えるでしょう<h1>。何故ですか?

3)(回答済み)なぜ「。*」を使用する必要があるのですか?()の間に何かを集めると思いましたか?

0 投票する
18 に答える
958791 参照

regex - 正規表現の非キャプチャグループとは何ですか?

非キャプチャグループ、つまり、(?:)は正規表現でどのように使用され、それらは何に適していますか?

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

javascript - JavaScript正規表現で任意の数のグループをキャプチャするにはどうすればよいですか?

私はJavaScriptのこの行を期待します:

次のようなものを返すには:

ただし、代わりに、最後にキャプチャされた一致のみが返されます。

キャプチャされたすべての一致を取得する方法はありますか?