1

我有一个字符串

@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>

知道我该怎么做吗?

4

2 回答 2

4

您可以使用此正则表达式进行匹配

@\[User:(\d+)\|(.*?)\]\s*\2

然后您可以使用它来替换 $1 $2 引用组的位置。

<a href="#/users/$1">$2</a>
于 2012-10-23T09:51:29.470 回答
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>
于 2012-10-23T09:59:33.370 回答