【问题标题】:Java Pattern issueJava 模式问题
【发布时间】:2011-10-17 13:51:35
【问题描述】:

我正在从数据库中获取包含表单字符串的文本

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 始终为 false,尽管 inout 文本具有该子字符串。 怎么了?

谢谢!

【问题讨论】:

  • String.contains(CharSequence) 有什么问题?
  • 好吧,其实代码更复杂。我已经发布了问题的核心,而不是整个代码。我确实需要模式。无论如何,感谢您的评论。

标签: java regex pattern-matching


【解决方案1】:

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

来自Javadoc

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

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

【讨论】:

    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    相关资源
    最近更新 更多