正则表达式用于查找不在html / jsp注释中的重音字母

时间:2017-12-06 15:32:24

标签: java regex jsp regex-negation

您好我需要找到jsp文件中注释内的所有重音词。 例如。

<%--This jsp comment have accents áóéí--%>
<html>
<!--This html comment have accents áóéí-->


<h1>This text have accents áóí</h1>
<html>

我需要在h1标签内找到重音字母,但不要在评论中找到。

到目前为止,我有正则表达式来查找评论,但我不知道如何否定该部分。 这是我的正则表达式:

\<[!%][ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\%*>

我试试

[ó](?!(\<[!%][ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\%*>))

但它没有用。

我怎能否定这种表达?

2 个答案:

答案 0 :(得分:0)

将每个HTML标记的内部文本与正则表达式匹配是不可行的。

我建议使用Java HTML解析器。 jsoup是个好人。有关更多示例,请参阅jsoup cookbook

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(html);
Element link = doc.select("a").first();

String text = doc.body().text(); // "An example link"
String linkHref = link.attr("href"); // "http://example.com/"
String linkText = link.text(); // "example""

答案 1 :(得分:0)

如果您只需要删除它们,请使用Notepad ++正则表达式查找和替换(选中“。匹配换行符”框):

找到:

(--%?>(?:(?!<%--|<!--).)*?)[^-!~@#$%^&*()+=.,<>|?/{}\[\]\\""';:\w\s]+

替换为:

$1

重复查找和替换,直到找不到更多匹配项。

否则,您可以使用该正则表达式来查找它们并单独处理它们。