1

正規表現を使用して文字列を照合しようとしていますが、希望どおりに機能するようになっています。

文字列5A(test1)、4B、3C(test2)があるとしましょう

私が最初に行うことは、コンマで文字列を分割することです。そのため、配列に3つの文字列が含まれることになります。

  • 5A(テスト1)
  • 4B
  • 3C(テスト2)

ここで、次の情報を引き出したいと思います。数字、文字、括弧内の内容。ただし、括弧はオプションです。

これが私のパターンです ([1-9][0-9]*)([AaBbCcIiFfPpSs]+)(\(.*\))?

これは、括弧が含まれていることを除いて機能します。だから私が 欲しいものが 5Aテスト1であるときに私は
5A(テスト1)を取得します


私も試し ([1-9][0-9]*)([AaBbCcIiFfPpSs]+)\(([^)]*)\)?
ましたが、これは括弧のない文字列では一致しないため、
5A(test1)と3C(test2)は一致しますが、4Bは一致しません。

どんな援助もいただければ幸いです。

4

2 に答える 2

1

オプションの最後の部分の周りに追加の非キャプチャグループが必要です

([1-9][0-9]*)([AaBbCcIiFfPpSs]+)(?:\(([^)]*)\))?

ここRegexrでそれを参照してください

于 2013-03-01T17:00:21.770 に答える
1

正規表現を少し変更します。

([1-9][0-9]*)([AaBbCcIiFfPpSs]+)(\((.*)\))?

内部のコンテンツ()は、キャプチャグループ4に含まれます。

あなたの言語が非キャプチャグループをサポートしている場合(?:pattern)

([1-9][0-9]*)([AaBbCcIiFfPpSs]+)(?:\((.*)\))?

これにより、不要なキャプチャが防止され(メモリがいくらか節約され)、内部のコンテンツ()がキャプチャグループ3に含まれます。

于 2013-03-01T17:00:40.137 に答える