2011-07-21 30 views

回答

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); 
} 
1
boolean matches = input.matches("Monday pt[0-9]+ Operating Mode"); 
0
String input = "Monday 24 Operating Mode"; 
if (input.matches ("Monday [0-9]+ Operating Mode")) { 
    //...it matches... 
} 
0

如何input.matches("Monday \\d{0,2} Operating Mode");

0
input.matches("Monday pt(\\d+) Operating Mode"); 
1

@马克·彼得斯& @Joachim绍尔给了很好的回答。但我想补充一点简短的评论。

使用\ d而不是[0-9]和\ s +而不是空格,即"Monday\\s+\\d+\\s+Operating Mode"。现在,正则表达式并不严格:它允许多个空格。对于我\ d比更具有可读性[0-9]

  1. 方法matches自动^在开始时和在正则表达式的结尾$增加。改为使用Matchermfind()

  2. 编译模式是一个非常耗费CPU时间的过程。在应用程序初始化期间对所有静态模式使用Pattern.compile(),然后使用就绪模式是一种很好的做法。 String.mantches()实际上创建了模式,然后运行它。

private static Pattern p = Pattern.compile("Monday\\s+\\d+\\s+Operating Mode");

// now use it:

p.matcher(str).find();