我正试图使用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 "*)
-而不是-这些(*,*)
字符中的任何一个-