C#正则表达式组合
我只是想知道我是否能把这两个表达组合成一个C#正则表达式组合,c#,regex,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}"); 通常,您会使用交替(|)来匹配多个模式中的一个。例如: aaa|bbb 将首先尝试匹配模式aaa,然后尝试模式bbb 但是,由于您的模式非常
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}");
通常,您会使用交替(
|
)来匹配多个模式中的一个。例如:
aaa|bbb
将首先尝试匹配模式aaa
,然后尝试模式bbb
但是,由于您的模式非常相似,您可以使用以下内容:
[A-Z0-9]{4,6}(-[A-Z0-9]{4,6}){2,3}
这将匹配由四到六个字母数字字符组成的任意序列,后跟连字符和四到六个字母数字字符,这些字符必须重复两到三次。通常,您会使用交替(
|
)来匹配多个模式中的一个。例如:
aaa|bbb
将首先尝试匹配模式aaa
,然后尝试模式bbb
但是,由于您的模式非常相似,您可以使用以下内容:
[A-Z0-9]{4,6}(-[A-Z0-9]{4,6}){2,3}
这将匹配由四到六个字母数字字符组成的任意序列,后跟连字符和四到六个字母数字字符,必须重复两到三次。如果模式中有可选部分,则可以使用
(OptionalPattern)?
,这样您的代码就可以变成:
[A-Z0-9]{4,6}-[A-Z0-9]{4,6}-[A-Z0-9]{4,6}(-[A-Z0-9]{4,6})?
但是pswg的
{2,3}
在这里是一个更好的选择,因为它还消除了模式中不必要的重复。我只是提一下,因为它在类似的情况下很有用。如果模式中有可选部分,可以使用(OptionalPattern)?
,这样您的代码就可以变成:
[A-Z0-9]{4,6}-[A-Z0-9]{4,6}-[A-Z0-9]{4,6}(-[A-Z0-9]{4,6})?
但是pswg的
{2,3}
在这里是一个更好的选择,因为它还消除了模式中不必要的重复。我只是提一下,因为它在类似的情况下很有用。+1很好的直接答案(使用|
)以及替代正则表达式。非常感谢,非常有用!这与[A-Z0-9]{4,6}的概念相同。@user3381113这是正确的。可以以完全相同的方式应用于字符、字符类或组。+1很好的直接答案(使用|
)以及替代正则表达式。非常感谢,非常有用!这与[A-Z0-9]{4,6}的概念相同。@user3381113这是正确的。可以以完全相同的方式应用于字符、字符类或组。