使用正则表达式在Java中检查字符串
问题描述:
我想检查一个字符串是否遵循使用正则表达式的特定格式。例如,用户在控制台输入:使用正则表达式在Java中检查字符串
下一个33
然后激活一个if语句,其检查,如果它的格式是“下一个(数字)(数字)”。
if ("next \\d\\d".equalsIgnoreCase(command)) {
//further code
}
我也曾尝试:
if (command.matches("next //d//d")) {
//further code
}
从我已阅读// d可以是任何数字0-9。所以我不明白为什么这不起作用。似乎我应该可以像上面那样查看一条线,但是我对Regex的经验很少。
我很抱歉为这个elemetary quesion。谢谢。
答
您的语法关闭。您需要String.matches(String)
且订单很重要。这
if ("next \\d\\d".equalsIgnoreCase(command)) {
// ...
应该
if (command.matches("next \\d\\d")) {
// ...
答
请试试这个代码。
String pattern = "next (\\d){2}";
String command = "next 33";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(command);
if (m.find()) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
第二个应该工作,假设你解决斜线的方向(应该是'“\\”''没有“//”'),输入被实际上得到记录到'command',那输入是'next 33'(区分大小写)......第一种方法不起作用,因为'equalsIgnoreCase'是区分大小写的,但直接比较,不是正则表达式匹配......另外,考虑改变'\\ d \\ d'到'\\ d {2}',因为它可以提高可读性......最后,阅读[模式文档](https://docs.oracle.com/javase/8/docs/api/ java/util/regex/Pattern.html),它将帮助你理解正则表达式的语法和正确的用法。 – XenoRo