以下に一致する正規表現を Java で作成したいと考えています。
*A*B
ここで、A と B はアスタリスクを除く任意の文字であり、A 文字と B 文字はいくつでも使用できます。A の前にはアスタリスクが付き、B の前にはアスタリスクが付きます。
以下は機能しますか?実行するとうまくいくようですが、絶対に確認したいです。
Pattern.matches("\\A\\*([^\\*]{1,})\\*([^\\*]{1,})\\Z", someString)
以下に一致する正規表現を Java で作成したいと考えています。
*A*B
ここで、A と B はアスタリスクを除く任意の文字であり、A 文字と B 文字はいくつでも使用できます。A の前にはアスタリスクが付き、B の前にはアスタリスクが付きます。
以下は機能しますか?実行するとうまくいくようですが、絶対に確認したいです。
Pattern.matches("\\A\\*([^\\*]{1,})\\*([^\\*]{1,})\\Z", someString)
動作しますが、次のように書き換えることができます (引用なし):
\A\*([^*]+)\*([^*]+)\Z
{1,}
と+
は同じ数量詞です (1 回以上)。注1:.matches()
正規表現を最初と最後に自動的に固定するを使用します。\A
そのため無くても構いません\Z
。
注 2: キャプチャ グループは保持していますが、実際に必要ですか?
注 3: 星の間で同じ文字を繰り返すかどうかは不明です。上記の例では、そうではないと仮定しています。同じことが必要な場合は、これを使用します。
\A\*(([^*])\2*)\*(([^*])\4*)\Z
マッチをオンにしたいが使用して*AAA*BBB
いない場合*ABC*DEF
^\*([a-zA-Z])\1*\*([a-zA-Z])\2*$
これもこれで一致しません
*A_$-123*B<>+-321