Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,如果某些字符串与 Monday ptnumber Operating Mode 其中,数字(pt后)的具体值为0,1,…99,…-有整数吗? Mondaypt和操作模式是硬编码的,只有数字可以在字符串中更改。如何input.matches(“星期一\\d{0,2}操作模式”)这也将提取数字 boolean matches = input.matches("Monday pt[0-9]+ Operating Mode"); String input ="Monday pt23 Operatin

如果某些字符串与

Monday ptnumber Operating Mode
其中,数字(pt后)的具体值为0,1,…99,…-有整数吗?
Mondaypt和操作模式是硬编码的,只有数字可以在字符串中更改。

如何
input.matches(“星期一\\d{0,2}操作模式”)

这也将提取数字

boolean matches = input.matches("Monday pt[0-9]+ Operating Mode");
String input ="Monday pt23 Operating Mode";
Pattern p = Pattern.compile("Monday pt([0-9]+) Operating Mode");
Matcher m = p.matcher(input);
boolean found = m.find();
if (found) {
    String number = m.group(1);
    System.out.println(number);
}

@马克·彼得斯和约阿希姆·绍尔给出了很好的回答。但我想补充一点简短的评论

使用\d代替[0-9],使用\s+代替空格,即
“星期一\\s+\\d+\\s+操作模式”
。现在正则表达式不那么严格了:它允许空格的数量。对我来说\d比[0-9]更可读

  • 方法
    匹配
    会在正则表达式的开头自动添加^。改用
    Matchermfind()

  • 模式的编译是非常CPU密集的过程。在应用程序初始化期间,最好对所有静态模式使用Pattern.compile(),然后使用ready模式。mantches()实际上创建模式,然后运行它

  • private static Pattern p=Pattern.compile(“星期一\\s+\\d+\\s+操作模式”)

    //现在使用它:

    p.matcher(str.find()

    String input ="Monday pt23 Operating Mode";
    Pattern p = Pattern.compile("Monday pt([0-9]+) Operating Mode");
    Matcher m = p.matcher(input);
    boolean found = m.find();
    if (found) {
        String number = m.group(1);
        System.out.println(number);
    }
    
    input.matches("Monday pt(\\d+) Operating Mode");