C#正则表达式只有在没有评论时才匹配

时间:2015-03-11 23:19:49

标签: c# regex

我正在编写一个Avisynth编辑的应用程序,并尝试获取所有变量,这些变量被定义为具有Regex的以下源代码:

Back = ImageReader("..\Backgrounds\Background_04.jpg", 0, Video.Framecount, 30, true).Spline16Resize(1920, 1080)

Video = ImageReader(".\Bilder\NDS Aufnahmebild.png", 0, 1000, 30, true)

我正在使用以下正常工作的Regex(全局,不区分大小写):

(?<var>[^#\s\t]\w+)(?:\s|\t)+?=(?:\s|\t)+?(ImageSource|ImageSourceAnim|ImageReader|ImageWriter)\((.*?)\)(?:\.|\n)?

输出结果为:

Group&#34; var&#34; :视频

第0组:ImageReader

第1组:&#34;。\ Bilder \ NDS Aufnahmebild.png&#34;,0,1000,30,true

然而,它不会忽视真正令人尴尬的评论。我只想在比赛前没有#时捕获字符串。我不认为这很复杂,但目前我还没有得到它。

我希望有人可以帮助我。我正在使用.Net Framework 4,并且不想更改版本。

1 个答案:

答案 0 :(得分:0)

只要在行的开头只有#,您就可以尝试匹配#,然后检查它是否确实与之匹配。如果没有,则没有评论,否则就是。

(?:\s|\t)*?(?<comment>#)?(?:\s|\t)*?(?<var>[^#\s\t]\w+)(?:\s|\t)+?=(?:\s|\t)+?(ImageSource|ImageSourceAnim|ImageReader|ImageWriter)\((.*?)\)(?:\.|\n)?

如果comment组包含#,则该行会被注释掉,因此请在应用中忽略它。