C# 中的正则表达式包括注释
本文关键字:包括 注释 正则表达式 | 更新日期: 2023-09-27 18:32:07
我有一个字符串:
String str = { { /*start address*/ 0x00004200, /*Length*/ 0x00003CBF } , { /*start address*/ 0x00004200, /*Length*/ 0x00003CBF } };
我需要使用正则表达式验证上述字符串。
我写的正则表达式是:
^{ *{ *([/*]{1} *('S* *)* *[*/]{1} *)?(0x)?[0-9a-fA-F]{1,8}, *([/*]{1} *('S* *)* *[*/]{1} *)?(0x)?[0-9a-fA-F]{1,8} *} *( *,'s*{ *([/*]{1} *('S* *)* *[*/]{1} *)?(0x)?[0-9a-fA-F]{1,8}, *([/*]{1} *('S* *)* *[*/]{1} *)?(0x)?[0-9a-fA-F]{1,8} *})*'s*} *;$
我知道这有点复杂。我无法正确处理。应用程序只是在 Regex.Match 行崩溃。
我认为问题在于字符串和正则表达式 w.r.t 之间有/* 和 */是不正确的。
像下面这样更改您的正则表达式。
^{ *{( *[/*]{2} *(?:(?!/'*|'*/).)*'*/ *(?:0x)?[0-9a-fA-F]{1,8} *)(?:, *[/*]{2} *(?:(?!/'*|'*/).)*'*/ *(?:0x)?[0-9a-fA-F]{1,8} *)} *, *{ *[/*]{2} *(?:(?!/'*|'*/).)*'*/ *(?:0x)?[0-9a-fA-F]{1,8} *, *[/*]{2} *(?:(?!/'*|'*/).)*'*/ *(?:0x)?[0-9a-fA-F]{1,8} *} *};$
演示
试试这个。
string txt="{ { /*start address*/ 0x00004200, /*Length*/ 0x00003CBF } , { /*start address*/ 0x00004200, /*Length*/ 0x00003CBF } }";
string re1="(''{)"; // Any Single Character 1
string re2=".*?"; // Non-greedy match on filler
string re3="(''/''*[''d''D]*?''*''/)"; // C Comment 1
Regex r = new Regex(re1+re2+re3,RegexOptions.IgnoreCase|RegexOptions.Singleline);
Match m = r.Match(txt);