0

私はこの正規表現を書きました:

String regex = "^\\s+something\\s+(not\\s+)?else\\s+([-,\\s\\d]+)$";

そしてこのコード:

String line = "something else 1, 2-3";
Matcher m = Pattern.compile(regex).matcher(line);

m.matches()戻りますtrue、それは私が欲しいものです。

ただし、次のコードについてもtrue、が返されますが、一致させたくありません。正規表現が返されるように変更するにはどうすればよいfalseですか?

String line = "something else 1 2 3";
Matcher m = Pattern.compile(regex).matcher(line);

ありがとう!

更新:範囲チェックは行っていません。リスト内のスペースの間にコンマがあるかどうかを確認したいだけです。したがって1, 3, 5-7、有効ですが、そうでは1, 2 5-7あり1 2 3ません。

4

1 に答える 1

3

あなたは自分が何をしようとしているのかを正確に言っていませんでしたが、私が推測すると、次のようなものです。

((\d+|\d+-\d+),\s+)*(\d+|\d+-\d+)$

最後のビットを置換すると、カンマ区切りの数値と数値リストのみが許可されます

于 2012-07-18T01:49:57.313 に答える