我有一个数字,比如900。例如,我提取了一个格式为"x <= int (int, int)"
的字符串。"x <= 900 (4, 7)"
我想验证它是否与"x <= 900 (int, int)"
格式匹配
如何使用字符串模式匹配器?
到目前为止,我已经尝试了以下操作,结果是错误的。
1) Pattern pattern = Pattern.compile("x <= 900 (\d, \d)");
2) Pattern pattern = Pattern.compile("x <= 900 ([0-9], [0-9])");
String expectedString = "x <= 900 (4, 7)";
Matcher m = pattern.matcher(expectedString);
System.out.println(m.matches());
您需要使用反斜杠((来转义括号,因为它们是正则表达式元字符。要匹配一个或多个数字,请使用
d+
。
Pattern pattern = Pattern.compile("x <= \d+ \(\d+, \d+\)");
演示
尝试转义圆括号-否则,它会将圆括号内的所有内容解释为一个组(而不是像您希望的那样将圆括号视为文字字符(。这是我做的一个(诚然使用.NET语法,但我认为它对Java来说是类似的(:
^x <= [0-9]+ ([0-9]+, [0-9]+)$
注意:在字符串中,您可能也需要转义,因此字符串为:
String regex = "^x <= [0-9]+ \([0-9]+, [0-9]+\)$: