正则表达式:根据字符串中的字符查找匹配项
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,
IF 前 2 个字符是“60”且第 3 个字符是“0”或“2”且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符为“61”且第 3 个字符为“0”或“2”且第 4 个字符为 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符是“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符是 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
IF 前 3 个字符是 "XYZ" AND 字符串包含 "T50" THEN 条件匹配。
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$
这样您就可以拼凑出所需的内容。
IF 前 2 个字符是“60”且第 3 个字符是“0”或“2”且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
^60[02]{1}[^WD]{1}
IF 前 2 个字符为“61”且第 3 个字符为“0”或“2”且第 4 个字符为 "W" 或 "D" THEN 条件匹配。
^61[02]{1}[WD]{1}
IF 前 2 个字符是“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
^62[^02]{1}[^WD]{1}
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符是 "W" 或 "D" THEN 条件匹配。
^((?!60|61|62).){2}[^02]{1}[WD]{1}
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
^((?!60|61|62).){2}[^02]{1}[^WD]{1}
IF 前 3 个字符是 "XYZ" AND 字符串包含 "T50" THEN 条件匹配。
^XYZ.*(T50).*$
IF 前 2 个字符是 "T5" AND 字符串包含“27”AND 字符串以“5”结尾 THEN 条件匹配。
^T5.*(27).*5$
我在 Reg EX 方面没有太多经验,这就是我发布这个问题的原因。这对你们中的大多数人来说可能是非常微不足道的!
我正在用 C# 编写我的应用程序,需要在字符串中找到特定的匹配模式。
我得到的字符串看起来与此类似,
610WBDFGFGM0122544 // (conditions 1 to 5)
XYZF44DT508755 // (condition 6)
T53497FD445 // (condition 7)
以上字符串只是我得到的示例。我将得到上述字符串与不同数字和字母的许多不同组合。
现在我需要根据给定的字符串检查某些条件。条件是,
For given string,
IF 前 2 个字符是“60”且第 3 个字符是“0”或“2”且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符为“61”且第 3 个字符为“0”或“2”且第 4 个字符为 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符是“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符是 "W" 或 "D" THEN 条件匹配。
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
IF 前 3 个字符是 "XYZ" AND 字符串包含 "T50" THEN 条件匹配。
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$
这样您就可以拼凑出所需的内容。
IF 前 2 个字符是“60”且第 3 个字符是“0”或“2”且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
^60[02]{1}[^WD]{1}
IF 前 2 个字符为“61”且第 3 个字符为“0”或“2”且第 4 个字符为 "W" 或 "D" THEN 条件匹配。
^61[02]{1}[WD]{1}
IF 前 2 个字符是“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
^62[^02]{1}[^WD]{1}
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符是 "W" 或 "D" THEN 条件匹配。
^((?!60|61|62).){2}[^02]{1}[WD]{1}
IF 前 2 个字符不是“60”或“61”或“62”并且第 3 个字符不是“0”或“2”并且第 4 个字符不是 "W" 或 "D" THEN 条件匹配。
^((?!60|61|62).){2}[^02]{1}[^WD]{1}
IF 前 3 个字符是 "XYZ" AND 字符串包含 "T50" THEN 条件匹配。
^XYZ.*(T50).*$
IF 前 2 个字符是 "T5" AND 字符串包含“27”AND 字符串以“5”结尾 THEN 条件匹配。
^T5.*(27).*5$