如何使用正则表达式组查找嵌套评论

时间:2019-02-07 12:32:18

标签: c# regex

我正试图使用​​C#使用正则表达式查找一段文本中的所有注释。 注释如下:

(*Some comment text*)
(*Some comment (*In comment*) might also appear*)
(*Comment might 
be on serveral lines*)

评论的开头是(* 评论的结尾是*)

查找评论并不难,只要它不嵌套即可: \(\*(.*?)\*\)

我还找到了注释的解决方案,其中注释的开头和/或结尾仅存在一个字符(在下面的示例中,开始为(,结束为))。这适用于嵌套注释:

(?<Open>[(])(([^()]|(?<Open>[(])|(?<-Open>[)]))*?)(?<-Open>[)])(?(Open)(?!))

上面的解决方案依赖于查找替代方法=>开头组,结尾组或不是开头和结尾组的任何内容。

这是棘手的最后一部分。 我怎么能告诉正则表达式[^()]应该是字符的组合而不是单独的。 我想做的是这样:

(?<Open>\(\*)(([^\(\*,\*\)]|(?<Open>\(\*)|(?<-Open>\*\)))*?)(?<-Open>\*\))(?(Open)(?!))

但是[^\(\*,\*\)]应该被视为-而不是(*" and also not "*)-而不是-这些(*,*)字符中的任何一个-

0 个答案:

没有答案