只是一个小问题。
我必须在几个字符串中引用一个文本,第一次出现一个,最后一次出现。
实施例
[quote]
Hi to all
[quote]
im fine
[/quote]
[/quote]
我讨厌在DIV内写下所有引用的文字。所以我有一个正则表达式:
String pattern = "\\[quote\\](.*?)\\[\\\quote\\\]";
body = body.replaceAll(pattern, "<div class=\"quote\">[quote]$1[/quote]</div>");
它有效,但正则表达式从第一个[quote]到第一个[/ quote],第二个[/ quote]在DIV之外。我想要的是:
<div class="quote">
[quote]
Hi to all
[quote]
im fine
[/quote]
[/quote]
</div>
感谢。
答案 0 :(得分:1)
听起来像@nhahtdh所说,你只是想删除?
以使*
贪婪。
比较
public static void main(String[] args) {
String input = "[quote]\n"
+ "Hi to all\n"
+ "[quote]\n"
+ "im fine\n"
+ "[/quote]\n"
+ "[/quote]\n";
System.out.println( input.replaceAll( "(?s)\\[quote\\](.*?)\\[/quote]", "<div class=\"quote\">\n[quote]$1[/quote]\n</div>" ));
System.out.println();
System.out.println( input.replaceAll( "(?s)\\[quote\\](.*)\\[/quote]", "<div class=\"quote\">\n[quote]$1[/quote]\n</div>" ));
}
输出:
<div class="quote">
[quote]
Hi to all
[quote]
im fine
[/quote]
</div>
[/quote]
<div class="quote">
[quote]
Hi to all
[quote]
im fine
[/quote]
[/quote]
</div>