C#正则表达式组合

时间:2014-03-06 21:53:52

标签: c# regex

我只是想知道我是否可以将这两个表达式合并为一个。

 Regex comb1 = new Regex("[A-Z0-9]{4,6}-[A-Z0-9]{4,6}-[A-Z0-9]{4,6}");
 Regex comb2 = new Regex("[A-Z0-9]{4,6}-[A-Z0-9]{4,6}-[A-Z0-9]{4,6}-[A-Z0-9]{4,6}");

2 个答案:

答案 0 :(得分:4)

通常,您可以使用替换(|)来匹配多个模式中的一个。例如:

aaa|bbb

首先尝试匹配模式aaa,然后尝试模式bbb

但是,因为你的模式非常相似,你可以使用这样的东西:

[A-Z0-9]{4,6}(-[A-Z0-9]{4,6}){2,3}

这将匹配任意四到六个字母数字字符的序列,后跟一个连字符和四到六个字母数字字符,必须重复两到三次。

答案 1 :(得分:1)

如果您在模式中有可选部分,则可以使用(OptionalPattern)?,因此您的代码可能会变为:

[A-Z0-9]{4,6}-[A-Z0-9]{4,6}-[A-Z0-9]{4,6}(-[A-Z0-9]{4,6})?

但pswg的{2,3}在这里是更好的选择,因为它还消除了模式中不必要的重复。我只是提到,因为它在类似情况下很有用。