Java 拆分逗号分隔的字符串,不包括括号中的字符串
我有以下要拆分的字符串: 给定字符串:Java 拆分逗号分隔的字符串,不包括括号中的字符串,java,regex,string,split,Java,Regex,String,Split,我有以下要拆分的字符串: 给定字符串: [PSR__123456_A,[AgrID=123456,PoolID=A],,Auto,Bank,0,0],[PSR__123456_A,[AgrID=123456,PoolID=A],,Auto,Bank,0,0],[PSR_Net__123456_A,[AgrID=123456,PoolID=A],,Suppress_Collateral,Bank,0,0] 预期结果:(3个要素) 我尝试了以下正则表达式来解析/拆分上述字符串: ",(?![^[]
[PSR__123456_A,[AgrID=123456,PoolID=A],,Auto,Bank,0,0],[PSR__123456_A,[AgrID=123456,PoolID=A],,Auto,Bank,0,0],[PSR_Net__123456_A,[AgrID=123456,PoolID=A],,Suppress_Collateral,Bank,0,0]
预期结果:(3个要素)
我尝试了以下正则表达式来解析/拆分上述字符串:
",(?![^[]*[]])" or ",(?=(((?!]).)*\[)|[^\[\]]*$)"
但我仍然无法实现预期的结果,而是它给了我以下结果(6个要素):
在Java(正则表达式)中有没有一种方法可以做到这一点而不必逐个字符分割字符串?假设您的第一个元素以
[PSR
开头,那么您可以使用具有正向前瞻性的正则表达式,如下所示:
,(?=\[PSR)
使用\n
作为替换字符串
更新:正如他在评论中所描述的,您实际上可以使用],[
和]\n[
作为替换字符串
假设您的第一个元素以
[PSR
开头,那么您可以使用具有正向前瞻性的正则表达式,如下所示:
,(?=\[PSR)
使用\n
作为替换字符串
更新:正如他在评论中所描述的,您实际上可以使用],[
和]\n[
作为替换字符串
如果要选择逗号的时间和右边的内容应为开括号的2倍和闭括号的2倍,可以使用:
,(?=\[[^[]*\[[^[]*\][^]]*\])
在Java中:
String regex = ",(?=\\[[^\\[]*\\[[^\\[]*\\][^]]*\\])";
见|
这将符合:
匹配逗号,
正向前瞻(?=
匹配:\[^[]*\[^[]*\][^]]+\]
匹配\[
[
求反字符类不匹配[^[]*
[
匹配\[
[
求反字符类不匹配[^[]*
[
匹配\]
]
否定字符类不匹配[^]]*
]
匹配\]
]
关闭正向前瞻)
,(?=\[[^[]*\[[^[]*\][^]]*\])
在Java中:
String regex = ",(?=\\[[^\\[]*\\[[^\\[]*\\][^]]*\\])";
见|
这将符合:
匹配逗号,
正向前瞻(?=
匹配:\[^[]*\[^[]*\][^]]+\]
匹配\[
[
求反字符类不匹配[^[]*
[
匹配\[
[
求反字符类不匹配[^[]*
[
匹配\]
]
否定字符类不匹配[^]]*
]
匹配\]
]
关闭正向前瞻)
\uuuu>或任何类型的模式吗?不依赖于开始characters@Manish lol我没有看到。更新了答案,谢谢你的评论,如果第一个元素确实总是有相同的前缀。@FedericoPiazza谢谢,但是,所有的字符串元素都不同,除了方括号中的字符串模式:-)@Jown你能描述第一个模式吗?它总是有\uu
或任何类型的前缀吗模式?,不依赖于启动characters@Manish哈哈,我没看到。更新了答案,谢谢你的评论