我有^(\d{3}.\d{2}.ABC|\d{10}.\d{6}.XYZ)$
我想用
匹配每个单词 123.45.ABC
我的问题是我有很多像[{1}}这样的扩展程序,所以我想让我的模式像前缀ABC,XYZ,PQR
一样普通,然后扩展。
我想要\d{3}.\d{2}.
(prefix pattern) (extension)
我可以 (\d{3}.\d{2}) (.ABC or .XYZ MORE EXTENSIONS)
但它匹配两个第一组用于数字,一个用于扩展。
答案 0 :(得分:1)
只需将扩展名放在非捕获组中。您可以在非捕获组中添加任意数量的扩展名。
^(\d{10}\.\d{6}\.(?:ABC|XYZ))$
<强>解释强>
^
断言我们在行的开头。()
捕获小组。\d{10}
正好10位数。\.
一个文字点。\d{6}
完全匹配6位数字。\.
匹配文字点。(?:)
非捕获组。它不会捕获任何东西,但会进行匹配操作。ABC
Literal ABC |
逻辑OR运算符。XYZ
匹配文字XYZ
$
行尾。答案 1 :(得分:0)
听起来像
^\d{10}\.\d{6}\.[A-Z]{3}$
在Java中,使用matches
我们不需要锚点:
if (subjectString.matches("\\d{10}\\.\\d{6}\\.[A-Z]{3}")) {
// It matched!
}
else { // nah, it didn't match...
}
答案 2 :(得分:0)
public static void main(String[] args) {
String s1 = "1111.111.XYZ"; // can match with AAA, VVA, ASA etc.. if you want only ABC and XYZ, then Avinash's answer is the way to go..
String s2 = "1111.111.ABC";
System.out.println(s1.matches("\\d{4}\\.\\d{3}\\.[A-Z]{3}"));// [A-Z]{3} matches any capital letter exactly 3 times.
System.out.println(s2.matches("\\d{4}\\.\\d{3}\\.[A-Z]{3}"));
}
O / P:
true
true