我有一个字符串:
String str = "sourceType=Match, msg=Event yyuyu, test 1, usrPicture=null, friendCount=0";
现在我正在编写一个正则表达式,将“msg”的值替换为“....” 我的正则表达式如下所示:
str.replaceAll("(\\smsg=)(.+?)(,)", "$1...$3");
根据我上面的正则表达式,它匹配直到:
msg=Event yyuyu,
但我希望它匹配直到:
msg=Event yyuyu, test 1,
基本上它应该匹配到最后一个“,”(我的意思是它应该匹配到键“msg”的值的最后一个“,”)。我尝试在 (,) 之后放置一些正则表达式。但这不起作用。对此的任何帮助将非常感激。
最佳答案
问题是,您是说通过在 (.+?)
中添加 ?
来匹配尽可能少的字符。尝试将其删除。
str.replaceAll("(\\smsg=)(.+)(,)", "$1...$3");
此外,您提到您想要匹配到最后一个 ,
所以它应该匹配到
msg=Event yyuyu, test 1, usrPicture=null,
直到
msg=Event yyuyu, test 1,
正如您在问题中指定的那样。
关于Java 正则表达式匹配未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42546801/