1

私は既存のコードに取り組んでいます。ここには、昨日に属する場合にシンボルを削除する責任があるこのコードがあります。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class Test {
    public static void main(String args[]) {
        try {
            String currentSymbol = "TEST JUL 20 2013";
            Pattern datePattern = Pattern
                    .compile("(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC) \\d{2} \\d{4}");
            Matcher dateMatcher = datePattern.matcher(currentSymbol);
            if (dateMatcher.find()) {
                System.out.println("Inside dateMatcher.find");
            } else {
                System.out.println("Not Inside dateMatcher.find");
            }
        } catch (Exception t) {
            t.printStackTrace();
        }
    }

}

このコードは正常に動作しますが、この行でこれが必要な理由を誰か教えてください。 \\d{2} \\d{4}これはどういう意味ですか

        Pattern datePattern = Pattern
                .compile("(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC) \\d{2} \\d{4}");

前もって感謝します

4

3 に答える 3

12

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.htmlを見てください。

  • \\dは文字クラス "Decimal" です。つまり、0 から 9 までの任意の数字です。
  • {2}「前の式は正確に 2 回出現する必要がある」を指定します

それで:

  • \\d{2}任意の 2 桁の数字に一致
  • \\d{4}任意の 4 桁の数字に一致
于 2013-07-03T10:30:14.597 に答える
2

これは、ある月の後に 2 桁の数字と 4 桁の数字が続くものと一致します。Jan 14 2012

于 2013-07-03T10:30:16.487 に答える
1

\\d10 進数 (平たく言えば 0 ~ 9) を指し、中かっこ内の数字は予想される正確な発生数です。

あなたの場合、{2} は月の 2 桁に一致し、{4} は年の 4 桁に一致します。

于 2013-07-03T10:32:14.277 に答える