我有两个正则表达式,如下所述。
Regex 1。
^\d{9}_[a-zA-Z]{1}_(0[1-9]|1[0-2]).(0[1-9]|[1-2][0-9]|3[0-1]).[0-9]{4}_[0-9]{3}_[0-9a-zA-Z]{2}(?:_[0-9a-zA-Z]*)?
使用这个我正在检查字符串。
999999999_A_12.10.2015_010_2q_somedescription
如果任何这种模式失败,请说
999999999_12.10.2015_010_2q_somedescription
我需要通知第二部分错过了这个我正在使用正则表达式。
Regex 2.
^\d{9}_^[a-zA-Z]$_(0[1-9]|1[0-2]).(0[1-9]|[1-2][0-9]|3[0-1]).[0-9]{4}_^[0-9]{3}$_[0-9a-zA-Z]{2}$_[0-9a-zA-Z]*
我尝试将正则表达式和字符串拆分成组并进行比较。即使我的字符串包含
,我也在vb.net中使用Regex.Match方法999999999_AB_12.10.2015_010_2q_somedescription
它给出了成功的结果。所以我写了正则表达式2完全匹配。但我需要将这两个正则表达式组合在一起并将其组合成一个表达式。我正在拆分正则表达式2和字符串比较它们使用vb.net中的Regex.Match方法,但是我不想保留两个正则表达式。
考虑匹配:9
99999999_A_12.10.2015_010_2q_somedescription
如果上述字符串中缺少任何内容,如
999999999_12.10.2015_010_2q_somedescription
(或)如果有任何其他格式如
999999999_AB_12.10.2015_010_2q_somedescription
被认为是不匹配我需要找到哪个部分丢失,我应该通知用户
MisMatch:
999999999_12.10.2015_010_2q_somedescription,999999999_AB_12.10.2015_010_2q_somedescription,999999999_AB_12.10.20_010_2q_somedescription,999999999_AB_12.10.2015_01_2q_somedescription,999999999_AB_12.10.2015_010_2_somedescription,9999_AB_12.10.2015_010_2q_somedescription
答案 0 :(得分:0)
您应该使用命名组来获取可以更改的部分的值。例如:
\d{9}_(?<X>[a-zA-Z]{1})_(0[1-9]|1[0-2]).(0[1-9]|[1-2][0-9]|3[0-1]).[0-9]{4}_[0-9]{3}_[0-9a-zA-Z]{2}(?:_[0-9a-zA-Z]*)?
现在在VB.NET中,您可以检查匹配中捕获组X的值。然后,您可以使用if
或switch
执行任何操作。