与以下模式匹配的java正则表达式是什么?
<anyString>.<5 or 10>.anyNumber.anyNumber
这里有5和10个数字。
答案 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]*