有什么办法可以让.replaceFirst()开始仅在特定字符串之后替换a?例如我知道正则表达式不能很好地处理html,并且我有包含1 h2头和一个段落的html文本。
现在,我使用软件替换的关键字可以正常工作,但是有时在标题中也替换了这些关键字。有什么方法可以让Java知道在第一个之后就开始放松

</h2>


串?

最佳答案

如果您想使用正则表达式解决方案(因此,如果使用replaceFirst()replaceAll()则没有区别),我建议使用捕获组:

(?s)(<\/h2.+)\b(keyword)\b(?=.*<\/h2>.*$)

 String regex = "(?s)(<\\/h2.+)\\b(keyword)\\b(?=.*<\\/h2>.*$)";


用您的单词替换“关键字”,并使用“ $ 1 [replacement_keyword]”作为替换字符串。

这是一个code example

String input = "<title>Replacing keywords with keyword</title>\n"+
               "<body>\n"+
               "<h2>Titles</h2>\n"+
               "<p>Par with keywords and keyword</p>\n"+
               "<h2>Titles</h2>\n"+
               "<p>Par with keywords and keyword</p>\n"+
               "</body>";
String regex = "(?s)(<\\/h2.+)\\b(keyword)\\b(?=.*<\\/h2>.*$)";
String keytoreplacewith = "NEW_COOL_KEYWORD";
String output = input.replaceFirst(regex, "$1"+keytoreplacewith);
System.out.println(output);


输出:

<title>Replacing keywords with keyword</title>
<body>
<h2>Titles</h2>
<p>Par with keywords and NEW_COOL_KEYWORD</p>
<h2>Titles</h2>
<p>Par with keywords and keyword</p>
</body>

关于java - 使.replaceFirst()在特定字符后开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29207033/

10-10 15:56