项是一个或多个数字或字符串的逗号分隔列表,例如
"12"
"abc"
"12,abc,3"
Run Code Online (Sandbox Code Playgroud)
我正在尝试匹配Java中零个或多个项目的括号列表,例如
""
"(12)"
"(abc,12)"
"(abc,12),(30,asdf)"
"(qqq,pp),(abc,12),(30,asdf,2),"
Run Code Online (Sandbox Code Playgroud)
对于最后一个示例,它应分别返回以下匹配组
qqq,pp
abc,12
30,asdf,2
Run Code Online (Sandbox Code Playgroud)
我想出了以下(不正确)模式
\((.+?)\)(?:,\((.+?)\))*
Run Code Online (Sandbox Code Playgroud)
这与上一个示例仅匹配以下内容
qqq,pp
30,asdf,2
Run Code Online (Sandbox Code Playgroud)
提示?谢谢
aio*_*obe 37
那就对了.您不能在Java正则表达式中拥有"可变"数量的捕获组.您的模式有两组:
\((.+?)\)(?:,\((.+?)\))*
|___| |___|
group 1 group 2
Run Code Online (Sandbox Code Playgroud)
每个组将包含该组的最后一个匹配的内容.即,abc,12将被覆盖30,asdf,2.
相关问题:
解决方案是使用一个表达式(类似的东西\((.+?)\))并用于matcher.find迭代匹配.
| 归档时间: |
|
| 查看次数: |
31105 次 |
| 最近记录: |