我正在尝试使用java regex
替换字符串中的某些值例如字符串看起来像
:20:1234
6789
:28G::xyz
|20:3456
1234
|29C:pqr
:20|9876
我想替换第二次出现的标签20值(可能是多行值)
|20:3456
1234
使用新值(可能是多行值)6789所以我期待的最终替换字符串是
:20:1234
6789
:28G::xyz
|20:6789
|29C:pqr
:20|9876
答案 0 :(得分:0)
这应该有效(测试):
str.replaceAll("(\\|" + "20" + ":)[^|:]*\n","$1" + "6789" + "\n");
答案 1 :(得分:0)
试试这个正则表达式:
String str = ":20:1234\n 6789\n:28G::xyz\n|20:3456\n 1234\n|29C:pqr\n:20|9876 \n|20:3456\n :20:1234\n";
str = str.replaceAll("(\\|20:)[\\s\\S]*?(?=[|:])","$1" + "6789\n");
此处检查直到达到|
或:
以外的任何其他内容,以便它不会全部选择。