java中的正则表达式,用于替换匹配模式中的第二次出现

时间:2014-01-03 10:38:36

标签: java regex

实际上我在java中有一些带有一些html内容的字符串现在我想通过在java中使用正则表达式替换其他一些html内容

String htmlData="<textarea style="display:none"/> some other data here <textarea/> some more other data here <input type="text"/>";

现在我想替换如下:

    String htmlData="<textarea style="display:none"></textarea> some other data here <textarea></textarea> some more other data here <input type="text"/>";

表示我需要将所有自我关闭的textarea标签更改为正确的语法textarea标签。

以下是我的尝试:

 String htmlData = htmlData.replace("<textarea/>","<textarea></textarea>");

但是如何找到具有属性的textarea节点?

3 个答案:

答案 0 :(得分:1)

我不知道为什么这与“第二次出现”有关,但这应该有效:

htmlData = htmlData.replaceAll("(<textarea[^/]*)/>", "$1></textarea>");

一些测试代码:

String htmlData = "<textarea style=\"display:none\"/> some other data here <textarea/> some more other data here <input type=\"text\"/>";
htmlData = htmlData.replaceAll("(<textarea[^/]*)/>", "$1></textarea>");
System.out.println(htmlData);

输出:

<textarea style="display:none"></textarea> some other data here <textarea></textarea> some more other data here <input type="text"/>

答案 1 :(得分:1)

这个应该适用或者你:

htmlData = htmlData.replaceAll("(<textarea[^>]*)/>", "$1></textarea>");

答案 2 :(得分:0)

试试这个:

<textarea[^/]*/>