Java正则表达式转义序列

时间:2013-06-03 19:32:54

标签: java regex pattern-matching

我试图匹配example in, <p><a href="example/index.html">LinkToPage</a></p>

使用rubular.com,我可以获得类似<a href=\"(.*)?\/index.html\">.*<\/a>的内容。

我将在Pattern.compile的{​​{1}}中使用此功能。我知道Java也必须被转义,我已经提出了\以及更多变种,但我弄错了。我在regexplanet上测试过。任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:2)

在Java代码中使用"<a href=\"(.*)/index.html\">.*</a>"

您只需要转义",因为它是一个Java字符串文字。

你不需要转义/,因为你不是用斜杠来划分你的正则表达式(就像你在Ruby中一样)。

另外,(.*)?毫无意义。只需使用(.*)即可。 *已经匹配“无”,因此?没有意义。

答案 1 :(得分:1)

Pattern.compile("<a href=\"(.*)?/index.html\">.*</a>");

这应该可以修复你的正则表达式。你不需要逃避正斜杠。

但是,我有义务向您提出使用正则表达式解析HTML的标准警告:

RegEx match open tags except XHTML self-contained tags

答案 2 :(得分:0)

你可以告诉Java要匹配什么,并调用Pattern.quote(str)让它为你逃脱正确的事情。