Java正则表达式替换值

时间:2014-03-23 04:44:54

标签: java regex replace

我正在尝试使用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 

2 个答案:

答案 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");

此处检查直到达到|:以外的任何其他内容,以便它不会全部选择。