gpt4 book ai didi

java:字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-01 18:48:23 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式将字符串拆分为字段,但不幸的是它不能 100% 工作,并且会跳过一些应该拆分的部分。这是程序处理字符串的一部分:

void parser(String s) {
String REG1 = "(',\\d)|(',')|(\\d,')|(\\d,\\d)";
Pattern p1 = Pattern.compile(REG1);
Matcher m1 = p1.matcher(s);
while (m1.find() ) {

System.out.println(counter + ": "+s.substring(end, m1.end()-1)+" "+end+ " "+m1.end());
end =m1.end();
counter++;
}
}

字符串是:

s= 3101,'12HQ18U0109','11YX27X0041','XX21','SHV7-P Hig, Hig','','GW1','MON','E','A','ASEXPORT-1',1,101,0,'0','1500','V','','',0,'mb-master1'

问题是它没有拆分 ,1,,0,

解析规则为:字符串由 ,' ', 括起来,例如 ,'ASEXPORT-1',int 仅由 , ,

括起来

预期输出=

3101   |   12HQ18U0109  |  11YX27X0041  | XX21    |  SHV7-P Hig, Hig|  |GW1   |MON  |E  |  A|   ASEXPORT-1|  1  |101   |0   |  0  |1500  |   V|    |   |   0   |mb-master1

总共 21 个元素。

最佳答案

您可以使用此正则表达式分割

,(?=([^']*'[^']*')*[^']*$)

仅当前面有偶数个 ' 时才会在 处拆分

<小时/>

所以对于

3101,'12HQ18,U0109','11YX27X0041'

输出为

3101
'12HQ18,U0109'
'11YX27X0041'
<小时/>

注意

它不适用于像 'hello 'h,i'world' 这样的嵌套字符串。如果存在任何此类情况,您应该使用以下正则表达式

(?<='),(?=')|(?<=\d),(?=\d|')|(?<=\d|'),(?=\d)

关于java:字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707994/

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