正则表达式:根据字符串中的字符查找匹配项

RegEx : Find match based on characters in a string

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

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

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

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

以上字符串只是我得到的示例。我将得到上述字符串与不同数字和字母的许多不同组合。

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

For given string,
  1. IF 前 2 个字符是“60”且第 3 个字符是“0”或“2”且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。

  2. IF 前 2 个字符为“61”且第 3 个字符为“0”或“2”且第 4 个字符为 "W" 或 "D" THEN 条件匹配。

  3. IF 前 2 个字符是“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。

  4. IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符是 "W" 或 "D" THEN 条件匹配。

  5. IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。

  6. IF 前 3 个字符是 "XYZ" AND 字符串包含 "T50" THEN 条件匹配。

  7. IF 前 2 个字符是 "T5" AND 字符串包含“27”并且字符串以“5”结尾“ THEN 条件匹配。

欢迎提出任何建议和答案!

更新

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

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

要匹配特定的 string/word:

60

匹配特定字符:

[WD]

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

[^WD]

要跳过任何字符序列:

.*

要匹配末尾的字符:

5$

要匹配除 61 和 62 之外的任何内容:

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

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

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

这样您就可以拼凑出所需的内容。

  1. IF 前 2 个字符是“60”且第 3 个字符是“0”或“2”且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。

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

  2. IF 前 2 个字符为“61”且第 3 个字符为“0”或“2”且第 4 个字符为 "W" 或 "D" THEN 条件匹配。

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

  3. IF 前 2 个字符是“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。

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

  4. IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符是 "W" 或 "D" THEN 条件匹配。

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

  5. IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。

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

  6. IF 前 3 个字符是 "XYZ" AND 字符串包含 "T50" THEN 条件匹配。

    ^XYZ.*(T50).*$

  7. IF 前 2 个字符是 "T5" AND 字符串包含“27”AND 字符串以“5”结尾 THEN 条件匹配。

    ^T5.*(27).*5$