如何将java中的参数列表与正则表达式匹配

如何将java中的参数列表与正则表达式匹配,java,regex,Java,Regex,我需要匹配如下列表: a = 9, b=5 , c = 15 值也可以是double、string、char和boolean类型,也可以是前一个变量(例如,a=b)。我试着安排以下正则表达式 ([A-Za-z0-9](=)?(,)?)|((=)?,\s*\d+)* 但迄今为止没有取得任何成功。任何帮助都将不胜感激。您可以使用此正则表达式([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+): 匹配: a = 9 b=5 c = 15 a=b b= true s = false

我需要匹配如下列表:

a = 9, b=5 , c = 15
值也可以是double、string、char和boolean类型,也可以是前一个变量(例如,
a=b
)。我试着安排以下正则表达式

([A-Za-z0-9](=)?(,)?)|((=)?,\s*\d+)*

但迄今为止没有取得任何成功。任何帮助都将不胜感激。

您可以使用此正则表达式
([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+)

匹配

a = 9 
b=5
c = 15
a=b
b= true
s = false

编辑

例如,如果要匹配如下列表:

a = 9 , b=5 , c = 15 , a=b , b= true , s = false
然后您可以使用这样的正则表达式
^([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+\s*,?\s*)*

在jave中,您可以使用:

boolean m = "a = 9 , b=5 , c = 15 , a=b , b= true , s = false".
                matches("^([a-zA-Z0-9]+\\s*=\\s*[a-zA-Z0-9]+\\s*,?\\s*)*");//true

您可以使用此正则表达式
([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+)

匹配

a = 9 
b=5
c = 15
a=b
b= true
s = false

编辑

例如,如果要匹配如下列表:

a = 9 , b=5 , c = 15 , a=b , b= true , s = false
然后您可以使用这样的正则表达式
^([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+\s*,?\s*)*

在jave中,您可以使用:

boolean m = "a = 9 , b=5 , c = 15 , a=b , b= true , s = false".
                matches("^([a-zA-Z0-9]+\\s*=\\s*[a-zA-Z0-9]+\\s*,?\\s*)*");//true
试试这个:

解决方案1

(\s*[A-Za-z0-9]\s*=\s*\S*(,)?)+
如果要捕获列表中的所有元素,请执行以下操作:

解决方案2

 ((\s*[A-Za-z0-9]\s*=\s*\S*(,)?)+)
YCF_L解决方案看起来也不错,除了一个小变化:

^([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+\s*,?\s*)*

第二部分忽略了一个事实,即可以有一个双精度值。 它仍将匹配,但如果您要按照上面的解决方案2捕获值,但使用YCF\u L解决方案,则小数部分将被删除

以下是有关捕获重复组的重要链接:

试试这个:

解决方案1

(\s*[A-Za-z0-9]\s*=\s*\S*(,)?)+
如果要捕获列表中的所有元素,请执行以下操作:

解决方案2

 ((\s*[A-Za-z0-9]\s*=\s*\S*(,)?)+)
YCF_L解决方案看起来也不错,除了一个小变化:

^([a-zA-Z0-9]+\s*=\s*[a-zA-Z0-9]+\s*,?\s*)*

第二部分忽略了一个事实,即可以有一个双精度值。 它仍将匹配,但如果您要按照上面的解决方案2捕获值,但使用YCF\u L解决方案,则小数部分将被删除

以下是有关捕获重复组的重要链接:


我认为您缺少列表,OP似乎希望根据他们的正则表达式匹配
a=1,b=3
。我认为您缺少列表,OP似乎希望根据他们的正则表达式匹配
a=1,b=3