我有一个像
这样的字符串@jhon.p @[User:151|Jhon Carter] Jhon Carter @sunil.p @[User:102|Sunil Nadar] Sunil Nadar
我想将javascript或Java中的正则表达式应用于上面的字符串以获得输出
@jhon.p <a href="#/users/151">Jhon Carter</a> @sunil.p <a href="#/users/102">Sunil Nadar</a>
知道我该怎么做吗?
答案 0 :(得分:4)
您可以使用此正则表达式匹配
@\[User:(\d+)\|(.*?)\]\s*\2
然后您可以使用它来替换$ 1 $ 2引用组的位置。
<a href="#/users/$1">$2</a>
答案 1 :(得分:1)
这是为您完成工作的Java代码:
String str =
"@jhon.p @[User:151|Jhon Carter] Jhon Carter @sunil.p @[User:102|Sunil Nadar] Sunil Nadar";
Matcher m = Pattern.compile("@\\[User:(\\d+)\\|([^]]+)\\]\\s+\\2").matcher(str);
StringBuffer buf = new StringBuffer();
while (m.find()) {
String link = "<a href=\"#/users/" + m.group(1) + "\">" + m.group(2) + "</a>";
m.appendReplacement(buf, link);
}
m.appendTail(buf);
System.out.printf("Converted String is: %s%n", buf);
<强>输出:强>
Converted String is: @jhon.p <a href="#/users/151">Jhon Carter</a> @sunil.p <a href="#/users/102">Sunil Nadar</a>