数学表达式 x <= 900 (int, int) 中的字符串匹配



我有一个数字,比如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]+\)$:

最新更新