我只是想知道我是否可以将这两个表达式合并为一个。
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}");
答案 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}
在这里是更好的选择,因为它还消除了模式中不必要的重复。我只是提到,因为它在类似情况下很有用。