Java 用于捕获带有逗号分隔的组排序的正则表达式
我需要正则表达式,它匹配一个URL模式,该模式以逗号分隔的任意顺序接受参数。 e、 g正则表达式应匹配:Java 用于捕获带有逗号分隔的组排序的正则表达式,java,regex,Java,Regex,我需要正则表达式,它匹配一个URL模式,该模式以逗号分隔的任意顺序接受参数。 e、 g正则表达式应匹配: /abcd(id1='some_value',id2='some_value') 以及 /abcd(id2='some_value',id1='some_value',id2='some_value') URL中不能有任何其他参数。每个参数应该完全匹配一次 下面的正则表达式以任何顺序匹配所有参数,但它们之间没有逗号。如何在regex中的参数之间添加逗号 \/abcd\((?:id='.*
/abcd(id1='some_value',id2='some_value')
以及
/abcd(id2='some_value',id1='some_value',id2='some_value')
URL中不能有任何其他参数。每个参数应该完全匹配一次
下面的正则表达式以任何顺序匹配所有参数,但它们之间没有逗号。如何在regex中的参数之间添加逗号
\/abcd\((?:id='.*'()|name='.*'()|count='.*'()){3}\1\2\3\)$
如果要在选项之间使用逗号进行匹配,可以在id的值之后更改
(
)的,
,并为结束参数添加额外的子句
这个正则表达式(与您的明显不同)将匹配括号之间的任意数量的参数,用逗号和空格分隔
\/abcd\((id='[^']*',| name='[^']*',| count='[^']*',)*(id='[^']*';name='[^']*'| count='[^']*')\)
在这里你可以试试
EDIT:Replaced.*for[^']*,因为我们希望确保正则表达式不会捕获“”之外的内容
每个参数应该完全匹配一次
这是主要问题
对于您的示例,我提出了以下正则表达式:
/abcd\s*\((?!(?:'[^']*'.[^']))*(?这里有一个问题,它需要在参数末尾使用任意数量的逗号。需要一些时间才能理解您提供的正则表达式,以便对其进行修改,因为我对正则表达式非常陌生。@SaurabhJain我不明白您的意思。正则表达式确保每个参数之间只有一个逗号,但不是在第一个之前,也不是一个逗号最后,你有一个失败的例子吗?我的坏。对我的用例来说是很完美的。非常感谢。Surababjin,我做了一些小小的修改。如果它能工作,你会考虑接受这个答案。找到一个失败的例子。正则表达式匹配下面的字符串:/abCD(name={bar },id={fo}”,计数={fO2}。'即以逗号而不是''结尾'