我从数据库中获取包含表单字符串
的文本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文本有子字符串。 有什么不对的?
谢谢!
答案 0 :(得分:4)
您应该使用find()
而不是matches()
,因为后者会尝试将整个字符串与模式匹配,而不是执行搜索。
来自Javadoc:
matches
方法尝试将整个输入序列与模式匹配。lookingAt
方法尝试将输入序列(从头开始)与模式匹配。find
方法扫描输入序列,寻找与模式匹配的下一个子序列。
此外,所讨论的模式并不需要正则表达式;您可以使用String.indexOf()
来执行搜索。