我想使用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
我当然尝试过regex101,但是我对这种复杂性的regex不太满意,并且茫然。
答案 0 :(得分:1)
您最好的选择是使用以下正则表达式,但过滤掉第一个捕获组为空的那些正则表达式:
((?<!(?<!\\)\\)".*?(?<!(?<!\\)\\)")|#.*