更好的正则表达匹配?

时间:2016-08-09 09:06:56

标签: regex bash optimization

我想要一个正则表达式来匹配由分号分隔的版本的枚举。也可能没有提到版本。

输入示例:

12.1.01;;;1.3.400;12-3;5;;;;;;4,5
12.5
;;;13,7;;15-12.300

分号之间至少应该提到一个版本。版本数量可以是任意版本。

目前这个正则表达式似乎做了我想要的事情:

regex="^\;*([0-9]+([\.\,\-]{1}[0-9]+)*)+(\;|([0-9]+([\.\,\-]{1}[0-9]+)*))*$"

其他解决方案?

3 个答案:

答案 0 :(得分:2)

如果你在分号内寻找任何东西,正则表达式

([^;]+)

应该做的伎俩。它将尽可能长地匹配不是;

的符号

正则表达式:

([^;\n\r]+)

还将分隔不同行上的版本名称,而它们之间没有任何分号。

答案 1 :(得分:0)

如果该行有效,则此模式与行匹配

/^(;*((\d+)\.)*?(\d+);*)*$/

此模式不匹配所有内容;

/[^;]+/g

此模式与版本匹配:

/(\d+\.)*\d+/

答案 2 :(得分:-1)

我会使用for来迭代版本,如下所示:

<directive1 ng-show="showing=='directive1'">
<directive2 ng-show="showing=='directive2'">

就像手动拆分经典编程语言一样。