次の文字列に一致する Java の正規表現を作成しようとしています。
数値、数値、数値 (このように単純にすることも、可変数の数値を使用することもできますが、各数値の後にカンマを付ける必要がありますが、空白はありません)
ここに私の試みがありました:
[[0-9],[0-9]]+
しかし、数字が含まれるものには何でも一致するようです
あなたはの線に沿って何かを試すことができます([0-9]+,)*[0-9]+
これは一致します:
7
7,52
7,52,999
これは一致しません:
7, 52
7, 52,
私はこれがうまくいくと思う
\d+,(\d+,)+
必要に応じて、数字とそれに続くコンマのみをキャプチャすることに注意してください
あなたは文字列から始めていると思います。なぜあなただけを使用しないのですString.split(",")
か?
^ は文字列の開始を意味し、$ は終了を意味します。それらを使用しない場合は、途中で何かに一致する可能性があります ( b
「abc」に一致)。
はその+
前の要素に作用します。 b
要素で[0-9]
あり、要素であり、グループ (括弧で囲まれたもの) も同様です。
したがって、一致する正規表現は次のとおりです。
^
[0-9]
(,[0-9])+
$
また、^[0-9](,[0-9])+$
以下の例のように、正規表現を[\d,]*
文字列表現として試してください。[\\d,]*
Pattern p4 = Pattern.compile("[\\d,]*");
Matcher m4 = p4.matcher("12,1212,1212ad,v");
System.out.println(m4.find()); //prints true
System.out.println(m4.group());//prints 12,1212,1212
たとえば、少なくとも 1 つのコンマ (,) と 2 つの数字を一致させたい場合は、文字列表現 as で12,1212
regex as を使用することができます。この正規表現は、最小 1 桁の数字の後に 1 つのカンマ (,) が続き、その後に最小 1 桁の数字が続く地域に一致します。(\d+,)+\d+
\\d+,)+\\d+