我试图匹配example
in,
<p><a href="example/index.html">LinkToPage</a></p>
使用rubular.com,我可以获得类似<a href=\"(.*)?\/index.html\">.*<\/a>
的内容。
我将在Pattern.compile
的{{1}}中使用此功能。我知道Java
也必须被转义,我已经提出了\
以及更多变种,但我弄错了。我在regexplanet上测试过。任何人都可以帮我这个吗?
答案 0 :(得分:2)
在Java代码中使用"<a href=\"(.*)/index.html\">.*</a>"
。
您只需要转义"
,因为它是一个Java字符串文字。
你不需要转义/
,因为你不是用斜杠来划分你的正则表达式(就像你在Ruby中一样)。
另外,(.*)?
毫无意义。只需使用(.*)
即可。 *
已经匹配“无”,因此?
没有意义。
答案 1 :(得分:1)
Pattern.compile("<a href=\"(.*)?/index.html\">.*</a>");
这应该可以修复你的正则表达式。你不需要逃避正斜杠。
但是,我有义务向您提出使用正则表达式解析HTML的标准警告:
答案 2 :(得分:0)
你可以告诉Java要匹配什么,并调用Pattern.quote(str)让它为你逃脱正确的事情。