0

以下に一致する正規表現を Java で作成したいと考えています。

*A*B

ここで、A と B はアスタリスクを除く任意の文字であり、A 文字と B 文字はいくつでも使用できます。A の前にはアスタリスクが付き、B の前にはアスタリスクが付きます。

以下は機能しますか?実行するとうまくいくようですが、絶対に確認したいです。

Pattern.matches("\\A\\*([^\\*]{1,})\\*([^\\*]{1,})\\Z", someString)
4

3 に答える 3

3

動作しますが、次のように書き換えることができます (引用なし):

\A\*([^*]+)\*([^*]+)\Z
  • 文字クラスで星を引用する必要はありません。
  • {1,}+は同じ数量詞です (1 回以上)。

注1:.matches()正規表現を最初と最後に自動的に固定するを使用します。\Aそのため無くても構いません\Z

注 2: キャプチャ グループは保持していますが、実際に必要ですか?

注 3: 星の間で同じ文字を繰り返すかどうかは不明です。上記の例では、そうではないと仮定しています。同じことが必要な場合は、これを使用します。

\A\*(([^*])\2*)\*(([^*])\4*)\Z
于 2013-05-23T17:03:41.560 に答える
0

マッチをオンにしたいが使用して*AAA*BBBいない場合*ABC*DEF

^\*([a-zA-Z])\1*\*([a-zA-Z])\2*$

これもこれで一致しません

*A_$-123*B<>+-321
于 2013-05-23T17:35:08.130 に答える