Java模式问题

时间:2011-10-17 13:51:36

标签: java regex pattern-matching

我从数据库中获取包含表单字符串

的文本
CO<sub>2</sub>

为了识别这一点,我写了以下代码

String footText = "... some text containing CO<sub>2</sub>";
String co2HTML = "CO<sub>2</sub>";
Pattern pat = Pattern.compile(co2HTML);
Matcher mat = pat.matcher(footText);

final boolean hasCO2 = mat.matches();

问题是hasCO2总是假的,尽管inout文本有子字符串。 有什么不对的?

谢谢!

1 个答案:

答案 0 :(得分:4)

您应该使用find()而不是matches(),因为后者会尝试将整个字符串与模式匹配,而不是执行搜索。

来自Javadoc

  
      
  • matches方法尝试将整个输入序列与模式匹配。
  •   
  • lookingAt方法尝试将输入序列(从头开始)与模式匹配。
  •   
  • find方法扫描输入序列,寻找与模式匹配的下一个子序列。
  •   

此外,所讨论的模式并不需要正则表达式;您可以使用String.indexOf()来执行搜索。