我不知道怎么写这样的正则表达式。我将从示例开始。
我的坏正则表达式:
(\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*)
...等结束正则表达式。
答案 0 :(得分:1)
你的问题不是很明确,但从例子中我认为这就是你所需要的:
^\d(,\d-\d(,\d(,\d(,[a-z]+)?)?)?)?$
匹配:
1,2-3,1,1,asdf
1,2-3,1,1
1,2-3,1
1,2-3
1,2
1