0

我写了一个简单的 Rss Feed 阅读器,现在我遇到了这个问题,在项目描述中我有文本,但是这个文本有这个字符<br/> 例如

“我的狗<br/>是黑色的,他<br/>留在桌子上”

现在我不会从这个字符中清除字符串,我写这个方法

private static String IsMatch(String s, String pattern) {
    try {
        Pattern patt = Pattern.compile(pattern);
        Matcher matcher = patt.matcher(s);
        return matcher.group();
    } catch (RuntimeException e) {
      return "Error";
    } }

String regex ="[<br/>]";

theString2=IsMatch(theString,regex);
 AppLog.logString(theString2);

但是这个方法总是返回错误。谁能告诉我有什么问题?

最好的问候安东尼奥

4

2 回答 2

1

问题是你永远不会在你的匹配器上调用 find() 。您必须在调用 group() 之前调用 find()(并测试 find() 返回 true)。

我不确定你的方法IsMatch应该做什么。事实上,它要么返回匹配项(即"<br/>",假设你之前调用find()过)要么返回"Error"

另外,不要将括号<br/>放在您的正则表达式中,它们不是必需的。

为了您的目的,我真的会考虑使用替换而不是正则表达式:

String s = "my dog <br/> is black and he <br/> stay on table ".replace("<br/>","");

作为建议,不要在不记录异常的情况下捕获异常。它们提供了不应隐藏的有价值的信息。当出现问题时,它会使调试变得非常困难。

于 2012-05-04T09:08:06.910 回答
0
String regex ="(\<br\/\>)";

我认为您需要注意有关正则表达式的语法细节:1.转义“<”之类的特殊字符

不同语言的正则表达式有不同的规范

于 2012-05-04T09:11:49.500 回答