Java 正则表达式匹配未按预期工作

标签 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 yyuyu, test 1,

基本上它应该匹配到最后一个“,”(我的意思是它应该匹配到键“msg”的值的最后一个“,”)。我尝试在 (,) 之后放置一些正则表达式。但这不起作用。对此的任何帮助将非常感激。

最佳答案

问题是,您是说通过在 (.+?) 中添加 ? 来匹配尽可能少的字符。尝试将其删除。

 str.replaceAll("(\\smsg=)(.+)(,)", "$1...$3");

此外,您提到您想要匹配到最后一个 , 所以它应该匹配到

msg=Event yyuyu, test 1, usrPicture=null,

直到

msg=Event yyuyu, test 1,

正如您在问题中指定的那样。

查看此https://regex101.com/r/BCNsTt/1

关于Java 正则表达式匹配未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42546801/

相关文章:

java - 无法从Java中的JComboBox播放声音

java - 实现 mouseClicked() 时出错

regex - 了解 bash 中 = 和 =~ 运算符的区别 [[ ]]

python - 此 Python 代码段的最短 ruby 等效项

java - 是否有非商业 Hibernate 查询检查器?

java - 无法使用 netbeans GUI 生成器调用 UI 类

jquery - 查找 <img> 源的一部分并删除 - end

javascript - 如何检查 RegEx 中的波斯尼亚特定字符?

java - 如何将arraylist转换为双引号中所有项目的字符串数组

python - 将整数从一个字符串移动到另一个字符串?