Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于捕获带有逗号分隔的组排序的正则表达式_Java_Regex - Fatal编程技术网

Java 用于捕获带有逗号分隔的组排序的正则表达式

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='.*

我需要正则表达式,它匹配一个URL模式,该模式以逗号分隔的任意顺序接受参数。 e、 g正则表达式应匹配:

/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}。'即以逗号而不是''结尾'