Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用正则表达式检查字符串_Java_Regex - Fatal编程技术网

在Java中使用正则表达式检查字符串

在Java中使用正则表达式检查字符串,java,regex,Java,Regex,我试图使用正则表达式检查字符串是否遵循特定格式。例如,用户在控制台中输入: 下一个33 然后激活一个if语句,检查它是否遵循“next(digit)(digit)”格式 我也尝试过: if (command.matches("next //d//d")) { //further code } 根据我所读的//d可以是任何数字0-9。所以我不明白为什么这不起作用。看起来我应该能够检查像上面这样的一行,但我对正则表达式几乎没有经验 我为这个问题感到抱歉。谢谢。您的语法已关闭。您需要Strin

我试图使用正则表达式检查字符串是否遵循特定格式。例如,用户在控制台中输入:

下一个33

然后激活一个if语句,检查它是否遵循“next(digit)(digit)”格式

我也尝试过:

if (command.matches("next //d//d")) {
   //further code
}
根据我所读的//d可以是任何数字0-9。所以我不明白为什么这不起作用。看起来我应该能够检查像上面这样的一行,但我对正则表达式几乎没有经验


我为这个问题感到抱歉。谢谢。

您的语法已关闭。您需要
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");
}

第二个应该可以工作,假设您固定了斜杠的方向(应该是
“\\”
而不是
“/”
),输入实际上被记录到
命令中,并且输入是
next 33
(区分大小写)。。。第一种方法不起作用,因为
equalsIgnoreCase
不区分大小写,但直接比较,而不是正则表达式匹配。。。另外,考虑将“\d \d”改为“\d{ 2 }”,因为它使可读性更好。最后,阅读,它将帮助您理解正则表达式语法和正确使用。
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");
}