正则表达式匹配,但不适用于Java

时间:2016-06-09 18:08:59

标签: java regex

我正在使用此正则表达式匹配并替换字符串的一部分:

(.*)<a href=\\"(.*)\\" class=\\"PopupItemLink\\">(.*)<\\\/a>(.*)

此字符串是一个示例:(https://regexr.com/3n1f1

\n&7This is the alert body\n\nYour name: HAlexTM\nYour ID: 1\nHere the link: <a href=\"test.com\" class=\"PopupItemLink\">Hey<\/a>\n\nThis is a html test: <p>Hey<\/p>\n&8Thu Jun 09 18:07:30 CEST 2016

字符串的这一部分(由RegEX匹配)应替换为Hey

<a href=\"test.com\" class=\"PopupItemLink\">Hey<\/a>

所以在Java中我使用这段代码

if (asit.matches("(.*)<a href=\\\\\"(.*)\\\\\" class=\\\\\"PopupItemLink\\\\\">(.*)<\\\\\\/a>(.*)")) {
    asit.replaceAll("<a href=\\\\\"(.*)\\\\\" class=\\\\\"PopupItemLink\\\\\"", "$1");
    asit.replaceAll(">(.*)<\\\\\\/a>", "$1");
    return asit;
}

但它没有返回任何东西,问题是什么?

1 个答案:

答案 0 :(得分:0)

我已经解决了删除if块并只写了replaceAll(),重新分配变量值,因为字符串是不可变的(感谢@ PM77-1)

output = output.replaceAll("<a href=\"(.*)\" class=\"PopupItemLink\"", "$1");
output = output.replaceAll(">(.*)<\\/a>", " ($1)");
return output;