Java正则表达式,需要有关转义字符的帮助

时间:2010-04-17 23:42:32

标签: java regex

我的HTML看起来像:

<td class="price" valign="top"><font color= "blue">&nbsp;&nbsp;$&nbsp;      5.93&nbsp;</font></td>

我试过了:

String result = "";
        Pattern p =  Pattern.compile("\"blue\">&nbsp;&nbsp;$&nbsp;(.*)&nbsp;</font></td>");

        Matcher m = p.matcher(text);

        if(m.find())
            result = m.group(1).trim();

似乎不匹配。

我错过了逃脱角色吗?

2 个答案:

答案 0 :(得分:2)

除非在正则表达式级别进行转义,否则$表示匹配行尾。要获得转义\所需的单$,需要在字符串文字中对其进行转义;即两个\个字符。所以...

... Pattern.compile("\"blue\">&nbsp;&nbsp;\\$&nbsp;(.*)&nbsp;</font></td>");

但那些评论说你不应该使用正则表达式解析HTML的人绝对正确 !!除非你想要长期脆弱的代码,否则你的代码应该使用严格或非严格的HTML解析器。

答案 1 :(得分:1)

可能你需要逃避$(我想,有两个斜线)?