我需要使用正则表达式验证字符串,字符串必须类似于“createRobot(x,y)”,其中x和y是数字。
我有类似
的东西 String ins;
Pattern ptncreate= Pattern.compile("^createRobot(+\\d,\\d)");
Matcher m = ptncreate.matcher(ins);
System.out.println(m.find());
但不起作用
你能帮助我吗?。
感谢。
答案 0 :(得分:4)
您在模式中忘记了Robot
这个词。此外,括号是正则表达式中的特殊字符,+
应放在\d
之后,而不是(
之后:
Pattern.compile("^createRobot\\(\\d+,\\d+\\)$")
请注意,如果您要验证仅包含此"createRobot"
字符串的输入,请注意:
boolean success = s.matches("createRobot\\(\\d+,\\d+\\)");
其中s
是您要验证的String
。但是如果你想要检索匹配的数字,你做需要使用模式/匹配器:
Pattern p = Pattern.compile("createRobot\\((\\d+),(\\d+)\\)");
Matcher m = p.matcher("createRobot(12,345)");
if(m.matches()) {
System.out.printf("x=%s, y=%s", m.group(1), m.group(2));
}
如您所见,在致电Matcher.matches()
(或Matcher.find()
)后,您可以通过{{检索 n th 匹配组1}}。
答案 1 :(得分:0)
您必须在\
之前添加(
,因为正则表达式中的(
是特殊群组字符
regexp pattren是: ^创建(\ d +,\ d +)