变化是如何在Java中检查与正则表达式,如果一些字符串需要用正则表达式帮助时,只有一个数字字符串
Monday ptnumber Operating Mode
其中编号(后PT)匹配有一个像0,1的具体值,。 ..99,.. - 任何整数? 星期一和操作模式硬编码只是数字可以在字符串中更改。
变化是如何在Java中检查与正则表达式,如果一些字符串需要用正则表达式帮助时,只有一个数字字符串
Monday ptnumber Operating Mode
其中编号(后PT)匹配有一个像0,1的具体值,。 ..99,.. - 任何整数? 星期一和操作模式硬编码只是数字可以在字符串中更改。
这也将提取的数量。
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);
}
boolean matches = input.matches("Monday pt[0-9]+ Operating Mode");
String input = "Monday 24 Operating Mode";
if (input.matches ("Monday [0-9]+ Operating Mode")) {
//...it matches...
}
如何input.matches("Monday \\d{0,2} Operating Mode");
input.matches("Monday pt(\\d+) Operating Mode");
@马克·彼得斯& @Joachim绍尔给了很好的回答。但我想补充一点简短的评论。
使用\ d而不是[0-9]和\ s +而不是空格,即"Monday\\s+\\d+\\s+Operating Mode"
。现在,正则表达式并不严格:它允许多个空格。对于我\ d比更具有可读性[0-9]
方法matches
自动^在开始时和在正则表达式的结尾$增加。改为使用Matchermfind()
。
编译模式是一个非常耗费CPU时间的过程。在应用程序初始化期间对所有静态模式使用Pattern.compile(),然后使用就绪模式是一种很好的做法。 String.mantches()实际上创建了模式,然后运行它。
private static Pattern p = Pattern.compile("Monday\\s+\\d+\\s+Operating Mode");
// now use it:
p.matcher(str).find();