如果某些字符串与
匹配,如何使用正则表达式检入JavaMonday ptnumber Operating Mode
其中数字(在pt之后)具有类似0,1,... 99,...的具体值 - 任何整数? 星期一和操作模式是硬编码的,只是数字可以在字符串中更改。
答案 0 :(得分:1)
boolean matches = input.matches("Monday pt[0-9]+ Operating Mode");
答案 1 :(得分:1)
@Mark Peters& @Joachim Sauer给出了很好的答案。但我想补充简短的评论。
使用\ d代替[0-9]和\ s +而不是空格,即"Monday\\s+\\d+\\s+Operating Mode"
。现在正则表达式不那么严格:它允许空格数量。对我来说\ d比[0-9]
方法matches
自动在开头添加^,在正则表达式结尾添加$。请改用Matchermfind()
。
模式编译是一个非常耗费CPU的过程。最好在应用程序初始化期间对所有静态模式使用Pattern.compile(),然后使用ready模式。 String.mantches()实际上创建了模式,然后运行它。
private static Pattern p = Pattern.compile("Monday\\s+\\d+\\s+Operating Mode");
// now use it:
p.matcher(str).find();
答案 2 :(得分:0)
String input = "Monday 24 Operating Mode";
if ( input.matches ( "Monday [0-9]+ Operating Mode" ) ) {
//...it matches...
}
答案 3 :(得分:0)
input.matches("Monday \\d{0,2} Operating Mode");
答案 4 :(得分:0)
这也将提取数字。
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);
}
答案 5 :(得分:0)
input.matches("Monday pt(\\d+) Operating Mode");