0

我有两个字符串

100-2000

100-X200-2012

我尝试编写匹配两个字符串的正则表达式,如下所示,如果第二个连字符以 X 开头,请忽略它

[0-9]+-[a-zA-Z0-9 \-X]+-[0-9]

但它无法匹配它,我不确定如何将它与我的标准匹配?

4

3 回答 3

0

由于您没有指定工具,我将使用 .NET 正则表达式风格(我个人最喜欢的):

\d+(-[ \w-[_X]][ \w-[_]]+)?-\d+

\d是相同的[0-9]

在 .NET 中,您可以使用字符类减法从字符类中删除特定元素。在这种情况下,我\w在字符类中包含了一个空格和 a(与 [0-9a-zA-Z_] 相同),然后减去下划线和大写 X。

另一种选择是使用负前瞻:

\d+(-(?!X)[ 0-9a-zA-Z]+)?-\d+

我更喜欢这个,但并不是所有的正则表达式都支持它。

于 2013-02-12T17:20:25.377 回答
0

它可以是这样的

(\d*)(-X\d*|)-(\d{4})
于 2013-02-13T10:49:18.230 回答
0

你的意思是这个:

[0-9]+-[^X][a-zA-Z0-9 \-]*-[0-9]+
于 2013-02-12T17:21:27.613 回答