2011-01-20 95 views
0

我试图做到以下几点:Java和正则表达式..如何申请

  Scanner scanner = new Scanner(file); 
      StringBuilder sb = new StringBuilder(); 
      while (scanner.hasNextLine()) { 
       sb.append(scanner.nextLine() + "\n"); 
      } 

      String data = sb.toString(); 

      Pattern p = Pattern.compile("\b[ABD-Z]*C[ABD-Z]*\b"); 
      Matcher m = p.matcher(data); 

      String a = m.group(); 

如何访问的m结果?为什么我的RegEx无法正常工作?

我已经试过已经逃脱反斜杠。

它适用于http://www.gskinner.com/RegExr/但我无法从Java获得任何输出。

请帮助≥..谢谢。

+0

我的RegEx旨在提取其中含有一个C的字符串。 – Alex 2011-01-20 16:26:05

+0

这已经是今天第三次发布相同的作业。除非你的意思是退格字符,否则你需要写`\\ b`而不是`\ b`。 – maaartinus 2011-01-20 16:29:40

+0

是的,尴尬,...我想我花了很长时间的试验后,我只是恼火。我还有很多工作,但我不会用它来做。只需要一个起动器为10. :) – Alex 2011-01-20 17:24:04

回答

1

您需要使用 m.find() 或 m.match() 最有可能在while循环。

while (m.find()) { 
do something with m.group() 
} 
1

是你逃避你反斜线有一个有效的Java字符串

你必须调用m.find()m.group()

1

您需要使用\\b代替\b因为后者是一个退格键和通话m.find()如果您要在调用group()之前匹配子字符串或m.match()以匹配整个字符串。