3

順番に含まれる文字列の正規表現が必要です:

  • アルファベット
  • 特殊文字
  • 日付 (日/月/年)

例えば

Payments - received by 04/13/13 

誰でもこれについて私を助けることができますか? 以下を試しました[a-z]* - [a-z]* 99/99/99が、うまくいきません。

4

4 に答える 4

1
pattern = Pattern.compile("[a-zA-Z]* - [a-zA-Z]* [0-9]{2}/[0-9]{2}/[0-9]{2}");
于 2013-05-17T14:26:21.473 に答える
0

9 を s に置き換えてみてくださいd。d は のプレースホルダーです[0-9]。また[a-z]、 と等しくありません[A-Za-z]

もちろん、これは 99 か月目の 35 日のような無効な日付にも一致します。

于 2013-05-17T14:26:35.327 に答える
0

ほとんどですが、いくつかの問題があります。

  • [az] は小文字のみに一致します。任意の数字/文字に \w を使用するか、小文字と大文字に [a-zA-Z] のみを使用できます。
  • そこにスペースを入れるには、 [\w ] または [a-zA-Z ] のいずれかを使用できます (最後に余分なスペースがあることに注意してください)。
  • 9 は文字通り文字 9 と一致します。\d を使用して任意の数字と一致させることができます。

代わりにこれを試してください:

[a-zA-z ]* - [a-zA-Z ]* \d{2}/\d{2}/\d{2}
于 2013-05-17T14:27:29.253 に答える
0

Try using this regular expression in Java:

Pattern pat = Pattern.compile(".+ - .+\\d\\d/\\d\\d/\\d\\d");

To check if the string matches:

String str = "Payments - received by 04/13/13";
Matcher m = p.matcher(str);
if (m.find())
    System.out.println("the string matches!");
于 2013-05-17T14:26:00.873 に答える