如何在java中用不同的替换替换字符串

时间:2014-09-16 07:24:36

标签: java regex

现在我有一个像这样的字符串

it is #1, or #2, or #3

我想把它转移到这个:

it is < a href="/1">#1< /a>, or #< a href="/2">#2< /a>, or < a href="/3">#3< /a>

所以我想将“#{num}”改为“&lt; a href =”/ {num}“&gt;#{num}&lt; / a&gt;”

我该怎么办?

2 个答案:

答案 0 :(得分:2)

这个Java代码应该可以工作:

String repl = input.replaceAll("(?<!>)#(\\d+)(?!<)", "<a href=\"/$1\">#$1</a>");

RegEx Demo

PS:我添加了前瞻功能,以确保我们不会使用超链接替换字符串,例如:it is <a href="/1">#1</a>(请参阅演示链接以获取示例)。

答案 1 :(得分:1)

使用捕获组捕获#以及以下数字。

正则表达式:

(#(\\d+))

替换字符串:

< a href="/$2">$1< /a>

DEMO

String str = "it is #1, or #2, or #3";
System.out.println(str.replaceAll("(#(\\d+))", "< a href=\"/$2\">$1< /a>"));

输出:

it is < a href="/1">#1< /a>, or < a href="/2">#2< /a>, or < a href="/3">#3< /a>