正则表达式匹配问题

时间:2010-12-08 07:46:51

标签: regex

我不知道怎么写这样的正则表达式。我将从示例开始。

我的坏正则表达式:

(\d*),?(\d*\.?\d*)-?(\d*\.?\d*),?([0-1]?),?([0-1]?),?([^\/]*)

匹配正常:

1,2-3,1,1,asdf
1,2-3,1,1
1,2-3,1
1,2-3
1,2
1

但不幸的是,这也将匹配,我不希望它:

asdf
1,asdf

理想情况下,如果之前的群组匹配,我想要匹配 - 匹配。

我知道应该使用正面背后的东西,但是如果我没有错,那么它应该在每组前面使用,除了第1和正则表达式之后会变大和臭。嗯,它可能是可变长度。

有没有优雅的方法呢?

修改

我想匹配下面给出的所有行匹配好的

我想将\d*与第一组匹配。然后,如果匹配\d*后跟,,我希望将(\d*\.?\d*)与第二组匹配。之后,如果第一组中有匹配后跟,,则匹配第二组后跟-我想匹配另一个(\d*\.?\d*) ...等结束正则表达式。

1 个答案:

答案 0 :(得分:1)

你的问题不是很明确,但从例子中我认为这就是你所需要的:

^\d(,\d-\d(,\d(,\d(,[a-z]+)?)?)?)?$

alt text

匹配:

1,2-3,1,1,asdf
1,2-3,1,1
1,2-3,1
1,2-3
1,2
1

Test link.