Java正则表达式匹配未按预期工作
我有一根绳子:Java正则表达式匹配未按预期工作,java,regex,string,replaceall,Java,Regex,String,Replaceall,我有一根绳子: String str = "sourceType=Match, msg=Event yyuyu, test 1, usrPicture=null, friendCount=0"; 现在我正在编写一个正则表达式,用“…”替换“msg”的值 我的正则表达式看起来像: str.replaceAll("(\\smsg=)(.+?)(,)", "$1...$3"); 根据我的上述正则表达式,它匹配到: msg=Event yyuyu, 但我希望它匹配到: msg=Event yyuy
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,
如你在问题中所述
请参见此问题是,您说的是通过在
(.+?)
中添加?
来匹配尽可能少的字符。尝试删除它
str.replaceAll("(\\smsg=)(.+)(,)", "$1...$3");
此外,您提到要匹配到最后一个,
,因此它应该匹配到
msg=Event yyuyu, test 1, usrPicture=null,
直到
msg=Event yyuyu, test 1,
如你在问题中所述
查看此如果您希望匹配到下一个属性
(usrPicture)
,如示例中所示,而不是如问题中所示,则可以尝试以下正则表达式
(\smsg=)(.+?)(,)(\s\w+=)
替换为$1…$3$4
输出:
sourceType=Match,msg=…,usrPicture=null,friendCount=0
可以找到Demo如果您希望匹配到下一个属性
(usrPicture)
,如您的示例所示,而不是如您的问题所示,则可以尝试以下正则表达式
(\smsg=)(.+?)(,)(\s\w+=)
替换为$1…$3$4
输出:
sourceType=Match,msg=…,usrPicture=null,friendCount=0
可以找到Demo检查,因为我想要的结果是:msg=..@Tushar根据您的正则表达式匹配,直到:msg=Event yyuyuyu,test 1,usrPicture=您需要使用
$1
或\1
提取组1。usrPicture
是否始终是msg
之后的下一个属性?检查,因为我希望结果像:msg=..@Tushar,根据您的正则表达式匹配,直到:msg=Event yyuyu,test 1,usrPicture=您需要使用$1
或\1
提取组1。usrPicture
是否总是msg
之后的下一个属性?