【发布时间】:2018-08-15 14:17:05
【问题描述】:
我想在 javascript 中使用正则表达式匹配注释字符 # 之前的所有内容。
例如,如果我有这条线
opt = "include # \"everything\" # until # the # real # comment\\" # comment "not quotes (comment)"
我希望正则表达式匹配 opt = "include # \"everything\" # until # the # real # comment\\"
请注意,我还要注意两个转义序列:
-
\\: 转义的反斜杠 -
\":转义引用
为了清楚起见,我有左侧“变量”、使用双引号的字符串(以及引号内的两个转义字符:\"、\\)和使用 # 的内联 cmets。此外,赋值运算符=。也不需要在每一行中添加逐行注释,因此应该匹配opt = "test # test"。想想你曾经编辑过的任何配置文件......
opt_name = "opt value" # comment
我确实尝试过 regex101,但我对这种复杂性的 regex 不太熟悉,而且不知所措。
【问题讨论】:
-
请编辑您的问题并提供涵盖所有正面和负面案例的样本数据。我们无法猜测您定义评论与真实文本的逻辑是什么。
-
很遗憾,您的编辑没有多大帮助。我们如何判断这些行中哪一行在末尾有注释:
test # test和test # test comment? -
你的意思是
^opt[^"]+".*?(?=" #|$)"吗?试试here。 -
我可以做到这一点。我更喜欢更通用的解决方案。除了选项线之外,我实际上还有另一种线,但我想这样就可以了。有点。我想要并且我已经解释过我想要匹配任何内容,直到注释字符不在引号内。如果你不能提供,那么如果你一直用不回答的方式刺激我,我只会把你变成南瓜。
-
你在那里回复我吗?