我有一个字符串:
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之间的/ *和* /不正确。
答案 0 :(得分:1)
如下所示更改正则表达式。
^{ *{( *[/*]{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} *} *};$
答案 1 :(得分:0)
试试这个。
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);