c#中的正则表达式包括注释

时间:2014-11-27 08:54:07

标签: c# regex comments

我有一个字符串:

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 个答案:

答案 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} *} *};$

DEMO

答案 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);