1

私は次のような文字列を持っています

@jhon.p @[User:151|Jhon Carter] Jhon Carter @sunil.p @[User:102|Sunil Nadar] Sunil Nadar

javascript OR 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 に答える