Javaでは、正規表現を使用して、 "MM/DD/YYYY"の形式で日付文字列を解析します。私は括弧でキャプチャグループを作ってみましたが、うまくいかないようです。これは、 "MM"、 "DD"、 "YYYY"コンポーネントではなく、一致する文字列全体を返します。それは関係なく、私はそれを与えるどのような指標の例外を返さないよう引数を取るJava正規表現はキャプチャグループを返しません
public static void main(String[] args) {
Pattern p1=Pattern.compile("(\\d{2})/(\\d{2})/(\\d{4})");
Matcher m1=p1.matcher("04/30/1999");
// Throws IllegalStateException: "No match found":
//System.out.println("Group 0: "+m1.group(0));
// Runs only once and prints "Found: 04/30/1999".
while (m1.find()){
System.out.println("Found: "+m1.group());
}
// Wanted 3 lines: "Found: 04", "Found: 30", "Found: 1999"
}
「group
」機能(m1.group(x)
)は、すべてで動作するようには思えません。 find()
のルーピングは、単一の完全一致 "04/30/1999"のみを返します。正規表現のかっこはまったく役に立たないようです!
これはPerlで行うのは非常に簡単でした:
my $date = "04/30/1999";
my ($month,$day,$year) = $date =~ m/(\d{2})\/(\d{2})\/(\d{4})/;
print "Month: ",$month,", day: ",$day,", year: ",$year;
# Prints:
# Month: 04, day: 30, year: 1999
私は何をしないのですか? Javaの正規表現はPerlのようなキャプチャグループを解析できませんか?