我有一个字符串:
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,
基本上它应该匹配到最后"," (我的意思是它应该匹配到最后","对于键的值#34; msg")。我尝试在(,)之后放一些正则表达式。但它不起作用。任何有关这方面的帮助将非常感激。
答案 0 :(得分:3)
问题是,您要通过在?
中添加(.+?)
来尽可能匹配最小字符。尝试删除它。
str.replaceAll("(\\smsg=)(.+)(,)", "$1...$3");
此外,你提到你要匹配到最后,
所以它应匹配到
msg=Event yyuyu, test 1, usrPicture=null,
直到
msg=Event yyuyu, test 1,
正如你在问题中指出的那样。
答案 1 :(得分:0)
如果您希望匹配到示例中的下一个属性(usrPicture)
,而不是您的问题,那么您可以尝试以下正则表达式
(\smsg=)(.+?)(,)(\s\w+=)
替换为$1...$3$4
输出:
sourceType=Match, msg=..., usrPicture=null, friendCount=0
可以找到演示here