[英]C# Regex match only if not comment
我正在编写一个用于Avisynth编辑的应用程序,并尝试获取所有变量,这些变量被定义为正则表达式中的以下源:
Back = ImageReader("..\Backgrounds\Background_04.jpg", 0, Video.Framecount, 30, true).Spline16Resize(1920, 1080)
Video = ImageReader(".\Bilder\NDS Aufnahmebild.png", 0, 1000, 30, true)
我正在使用以下正则表达式,到目前为止效果很好(全局,不区分大小写):
(?<var>[^#\s\t]\w+)(?:\s|\t)+?=(?:\s|\t)+?(ImageSource|ImageSourceAnim|ImageReader|ImageWriter)\((.*?)\)(?:\.|\n)?
输出为:
组“ var”:视频
组0:ImageReader
组1:“。\\ Bilder \\ NDS Aufnahmebild.png”,0、1000、30,是
但是,它不会忽略确实令人尴尬的评论。 我只想在比赛前没有#的情况下捕获字符串。 我不认为这很复杂,但目前我还不了解。
我希望有人能帮助我。 我正在使用.Net Framework 4,但不想更改版本。
只要在行首只有#
,那么您就可以简单地尝试匹配#
,然后检查它是否确实匹配它。 如果没有,则不评论,否则。
(?:\s|\t)*?(?<comment>#)?(?:\s|\t)*?(?<var>[^#\s\t]\w+)(?:\s|\t)+?=(?:\s|\t)+?(ImageSource|ImageSourceAnim|ImageReader|ImageWriter)\((.*?)\)(?:\.|\n)?
如果comment
组包含#
,那么该行将被注释掉,因此在您的应用程序中将其忽略即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.