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");