RegEx:根据字符串中的字符查找匹配项

时间:2015-01-14 18:36:28

标签: c# .net regex

我在Reg EX中没有太多经验,这也是我发布此问题的原因。对你们大多数人来说,这可能是非常微不足道的!

我在C#中编写应用程序,需要在字符串中找到某些匹配模式。

我得到的字符串看起来与此类似,

610WBDFGFGM0122544         // (conditions 1 to 5)
XYZF44DT508755             // (condition 6)
T53497FD445                // (condition 7)

上面的字符串只是我得到的样本。我将获得上述字符串的许多不同组合,其中包含不同的数字和字母。

现在从给定的字符串我需要检查某些条件。条件是,

For given string,
  1. 如果前2个字符是" 60" AND 3rd char是" 0"或" 2"和第四个字符不是" W"或" D" 那么条件匹配。

  2. 如果前2个字符是" 61" AND 3rd char是" 0"或" 2"第四个问题是" W"或" D" 那么条件匹配。

  3. 如果前2个字符是" 62" AND 3rd char不是" 0"或" 2"和第四个字符不是" W"或" D" 那么条件匹配。

  4. 如果前2个字符不是" 60"或" 61"或" 62" AND 3rd char不是" 0"或" 2"第四个问题是" W"或" D" 那么条件匹配。

  5. 如果前2个字符不是" 60"或" 61"或" 62" AND 3rd char不是" 0"或" 2"和第四个字符不是" W"或" D" 那么条件匹配。

  6. 如果前3个字符是" XYZ" AND字符串包含" T50" 那么条件匹配。

  7. 如果前2个字符是" T5" AND字符串包含" 27" AND字符串以" 5" THEN条件匹配结束。

  8. 欢迎任何建议和答案!

    更新

    在这种情况下使用RegEx的原因是,因此可以将外部文件中的RegEx模式外部化,而不包含在源代码中。这样,当出现新的条件时,可以轻松地在外部文件中添加相应的RegEx,而无需更改任何源代码。

    我没有能够在提出自己的RegEx方面取得任何进展。

2 个答案:

答案 0 :(得分:2)

  1. 如果前2个字符为“60”且第3个字符为“0”或“2”且第4个字符不是“W”或“D”那么条件匹配。

    ^60[02]{1}[^WD]{1}

  2. 如果前2个字符为“61”且第3个字符为“0”或“2”且第4个字符为“W”或“D”那么条件匹配。

    ^61[02]{1}[WD]{1}

  3. 如果前2个字符为“62”且第3个字符不是“0”或“2”且第4个字符不是“W”或“D”那么条件匹配。< / p>

    ^62[^02]{1}[^WD]{1}

  4. 如果前两个字符不是“60”或“61”或“62”且第三个字符不是“0”或“2”而第四个字符是“W”或“D”< / strong>那么条件匹配。

    ^((?!60|61|62).){2}[^02]{1}[WD]{1}

  5. 如果前2个字符不是“60”或“61”或“62”且第3个字符不是“0”或“2”且第4个字符不是“W”或“D” 那么条件匹配。

    ^((?!60|61|62).){2}[^02]{1}[^WD]{1}

  6. 如果前3个字符为“XYZ”且字符串包含“T50”那么条件匹配。

    ^XYZ.*(T50).*$

  7. 如果前两个字符为“T5”且字符串包含“27”且字符串以“5”结尾那么条件匹配。

    ^T5.*(27).*5$

答案 1 :(得分:1)

匹配特定的字符串/单词:

60

匹配某些字符:

[WD]

匹配除某些字符以外的所有字符:

[^WD]

跳过任何字符序列:

.*

最后匹配一个字符:

5$

匹配除61和62之外的任何东西:

((?!61|62).){2}

示例:以A开头,然后是B或C,然后是除D以外的任何内容,包含E,以F结尾:

A[BC][^D].*E.*F$

这应该允许你拼凑你需要的那些。