0

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

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

我将Pattern.compileJava. 我知道这\也必须逃脱,我想出了<a href=\\\"(.*)?\\\/index.html\\\">.*<\\\/a>更多的变体,但我弄错了。我在 regexplanet 上进行了测试。谁能帮我这个?

4

3 回答 3

2

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

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

你不需要 escape /,因为你没有用斜杠分隔你的正则表达式(就像你在 Ruby 中那样)。

另外,(.*)?没有任何意义。只需使用(.*). *已经可以匹配“nothing”,所以没有?.

于 2013-06-03T19:43:15.847 回答
1
Pattern.compile("<a href=\"(.*)?/index.html\">.*</a>");

那应该可以解决您的正则表达式。您不需要转义正斜杠。

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

RegEx 匹配打开的标签,XHTML 自包含标签除外

于 2013-06-03T19:44:05.283 回答
0

您可以告诉 Java 要匹配的内容并调用 Pattern.quote(str) 以使其为您逃避正确的事情。

于 2015-04-15T21:12:17.827 回答