2

Javaを使用して単純な正規表現パターンを機能させようとしています。文の末尾にアスタリスクが付いている大文字の単語を認識する必要があります。次の例から:

Test ABC*  array
「ABC*」、または正確には、アスタリスクで終わる大文字の単語を特定する必要があります。限られた正規表現の知識で次のパターン マッチングを試みましたが、今のところうまくいきません。
String text = "Test ABC*  array";
Matcher m = Pattern.compile("\b[A-Z]+[*]?\b").matcher(text);
任意のポインタをいただければ幸いです。

ありがとう

4

4 に答える 4

9

問題は、星の後の最後に単語境界がないことです。だからこれを試してください

Matcher m = Pattern.compile("\\b[A-Z]+\\*\\B").matcher(text);

\Bは単語の境界ではないため、これはまさに*と 空白の間で得られるものです。

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

于 2012-11-08T21:20:50.003 に答える
2

文字列に複数の AAA* パーツを含めることができると仮定します。

String text = "Test ABC*  array";
Matcher m = Pattern.compile("([A-Z]+\\*)").matcher(text);
while (m.find()) {
    System.out.println(m.group());
}
于 2012-11-08T21:19:28.510 に答える
1

私はそれを簡単に保ちます:

if(text.contains("*")) {
  int index = text.lastIndexOf("*");
  String ident= text.substring(0,index-1);
}
于 2012-11-08T21:19:14.327 に答える
0

バックスラッシュでリテラル アスタリスクをエスケープする必要があります。Java では、最終的に 2 つのバックスラッシュになります。

"[A-Z]+\\*"
于 2012-11-08T21:23:29.487 に答える