gpt4 book ai didi

java - 使用正则表达式替换不在括号中的逗号

转载 作者:行者123 更新时间:2023-12-01 07:26:13 25 4
gpt4 key购买 nike

我有这个字符串:

john(man,24,engineer),smith(man,23),lucy(female) 

如何用 @ 替换不在括号中的逗号?

结果应该是:

john(man,24,engineer)@smith(man,23)@lucy(female)

我的代码:

String str = "john(man,24,engineer),smith(man,23),lucy(female)";
Pattern p = Pattern.compile(".*?(?:\\(.*?\\)).+?");
Matcher m = p.matcher(str);
System.out.println(m.matches()+" "+m.find());

为什么m.matches()为真而m.find()为假?我怎样才能实现这个目标?

最佳答案

使用负前瞻来实现这一点:

,(?![^()]*\))

说明:

,         # Match a literal ','
(?! # Start of negative lookahead
[^()]* # Match any character except '(' & ')', zero or more times
\) # Followed by a literal ')'
) # End of lookahead

Regex101 Demo

关于java - 使用正则表达式替换不在括号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com