如何获得以连字符开头的匹配字符串和带正则表达式的字符

时间:2013-02-12 17:01:53

标签: regex

我有两个字符串

100-2000

100-X200-2012

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

\d[0-9]

相同

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

另一个选择是使用否定前瞻:

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

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

答案 1 :(得分:0)

你的意思是:

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

答案 2 :(得分:0)

可能是这样的

(\d*)(-X\d*|)-(\d{4})