需要java regex才能匹配以下字符串

时间:2011-02-01 13:15:37

标签: java regex

与以下模式匹配的java正则表达式是什么?

<anyString>.<5 or 10>.anyNumber.anyNumber

这里有5和10个数字。

3 个答案:

答案 0 :(得分:6)

.*\.(?:5|10)\.\d+\.\d+

应该有用。

<强>解释

.*        # any number of characters (except newlines)
\.        # literal dot
(?:5|10)  # 5 or 10
\.        # literal dot
\d+       # one or more digits
\.        # literal dot
\d+       # one or more digits

请记住,如果在Java中使用它,则需要在构造正则表达式时转义反斜杠:

Pattern regex = Pattern.compile(".*\\.(?:5|10)\\.\\d+\\.\\d+");

答案 1 :(得分:0)

假设我正确地读了你的意图,这应该有效:

   Pattern p = Pattern.compile(".*?\\.(?:5|10)\\.(\\d+)\\.(\\d+)");
    Matcher m;

    m = p.matcher(".5.11.10");
    m.matches(); // == true
    m.group(1).equals("11");
    m.group(2).equals("10");


    m = p.matcher("hannib al.10.11.12");
    m.matches(); // == true
    m.group(1).equals("11");
    m.group(2).equals("12");

答案 2 :(得分:0)

假设您的意思是示例有效字符串.5.1.1

此表单应该可以解决问题

\.(5|10)\.[0-9]\.[0-9]

或者如果后两个数字可以有多个字符,即.10.123.1234

\.(5|10)\.[0-9]*\.[0-9]*