2

次の文字列に一致する Java の正規表現を作成しようとしています。

数値、数値、数値 (このように単純にすることも、可変数の数値を使用することもできますが、各数値の後にカンマを付ける必要がありますが、空白はありません)

ここに私の試みがありました:

[[0-9],[0-9]]+

しかし、数字が含まれるものには何でも一致するようです

4

5 に答える 5

3

あなたはの線に沿って何かを試すことができます([0-9]+,)*[0-9]+

これは一致します:

  • 数字は 1 つだけです。例:7
  • 2 つの数字。例:7,52
  • 3 つの数字、例:7,52,999

これは一致しません:

  • スペースのあるもの、例えば:7, 52
  • カンマで終わるリスト。例:7, 52,
  • この問題の範囲外の他の多くのこと。
于 2012-10-29T01:20:05.727 に答える
1

私はこれがうまくいくと思う

\d+,(\d+,)+

必要に応じて、数字とそれに続くコンマのみをキャプチャすることに注意してください

于 2012-10-29T01:19:44.843 に答える
1

あなたは文字列から始めていると思います。なぜあなただ​​けを使用しないのですString.split(",")か?

于 2012-10-29T01:20:30.420 に答える
0

^ は文字列の開始を意味し、$ は終了を意味します。それらを使用しない場合は、途中で何かに一致する可能性があります ( b「abc」に一致)。

はその+前の要素に作用します。 b要素で[0-9]あり、要素であり、グループ (括弧で囲まれたもの) も同様です。

したがって、一致する正規表現は次のとおりです。

  • 文字列の開始^
  • [0-9]
  • 数字によって流れる任意の量の昏睡(,[0-9])+
  • 文字列の終わり$

また、^[0-9](,[0-9])+$

于 2012-10-29T01:22:49.623 に答える
0

以下の例のように、正規表現を[\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,1212regex as を使用することができます。この正規表現は、最小 1 桁の数字の後に 1 つのカンマ (,) が続き、その後に最小 1 桁の数字が続く地域に一致します。(\d+,)+\d+\\d+,)+\\d+

于 2012-10-29T01:44:35.710 に答える