匹配直到注释字符不在带转义字符的引号内



我想在注释字符#之前匹配所有内容,在 javascript 中使用正则表达式。

例如,如果我有

opt = "include # "everything" # until # the # real # comment\" # comment "not quotes (comment)"

我希望正则表达式与opt = "include # "everything" # until # the # real # comment\"匹配

请注意,我还在注意两个转义序列:

  • \:转义的反斜杠
  • ":转义的引号

为了清楚起见,我有左手的"变量",使用双引号的字符串(以及引号内的两个转义字符:"\(,以及使用#的内联注释。此外,赋值运算符=.也不需要在每一行中都放置逐行注释,因此opt = "test # test"应该匹配。想想你曾经编辑过的任何配置文件......

opt_name = "opt value" # comment

我当然尝试过正则表达式 101,但我对这种复杂性的正则表达式不太满意,而且不知所措。

最好的办法是使用以下正则表达式,但过滤掉第一个捕获组为空的正则表达式:

((?<!(?<!\)\)".*?(?<!(?<!\)\)")|#.*

最新更新