私は Android コーディングは初めてですが、Perl 正規表現の経験があります。0 個以上の識別子のリストを次のような正規表現と一致させる必要があります。
^\s*((\w\d\d\d)(\s+$2)*)?$
$2 は、以前に一致したグループ (\w\d\d\d) を参照することに注意してください。Android コードの場合、次のようになります。
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+\$2)*)?$")
Eclipse コンパイラーは \$2 をコンパイルしません。私は \2 も試しました。これはコンパイルされますが、リテラル番号 2 と一致しようとします。
ブルート フォース ソリューションは、識別子パターンを繰り返すことです。
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+(\\w\\d\\d\\d))*)?$")
これは機能しますが、以下の欠点があります: * いずれかの繰り返しで構文エラーを起こしやすい * 識別子が複雑になるにつれて文字列が大きくなる * 洗練されていない * 参照する必要がある場合はさらに複雑になる1つ以上の以前の試合
Javaで正規表現内の以前に一致したグループを参照する方法はありますか?