Regex 需要JS正则表达式模式帮助

Regex 需要JS正则表达式模式帮助,regex,Regex,我正在用python编写一个Javascript缩略器,并试图使用正则表达式删除注释 \s\/\/[^\n]*\n 从正则表达式中得到意外结果的javascript是 /* deliberately different */ // test line 1 // test line 2 var test_http = "http://test.com"; 我使用的是位于的伟大的regex测试资源,它显示//测试行2不匹配,我不明白为什么。 注意:我故意在注释前寻找空白(包括换行符),以避免与声

我正在用python编写一个Javascript缩略器,并试图使用正则表达式删除注释

\s\/\/[^\n]*\n
从正则表达式中得到意外结果的javascript是

/* deliberately different */
// test line 1
// test line 2
var test_http = "http://test.com";
我使用的是位于的伟大的regex测试资源,它显示
//测试行2
不匹配,我不明白为什么。
注意:我故意在注释前寻找空白(包括换行符),以避免与声明(如
test\u http
变量)相匹配

有人能帮我解释一下吗

我故意在注释前寻找空白(包括换行符),以避免与test_http变量等声明相匹配

如果我们可以假设每个注释都以新行开头,那么这种模式将起作用:

^(?:(?:/\*(?:.|\n)*?\*/)|(?://.*))


然而,如果不是这样,您将不得不在开发上下文感知解析器上投入一些时间。这是因为regex从来没有被设计成上下文感知的。如果您想根据匹配的上下文采取不同的操作,仅使用正则表达式(通常)是不够的

此模式可与上下文感知解析器结合使用,以识别注释:

(?:/\*(?:.|\n)*?\*/)|(?://.*)

\s\/\/[^]*\n,这似乎起作用了。
\/\/\s.
您要找的是什么?@Stack-不,匹配第1行,直到最后一个换行符([^]匹配任何字符,包括换行符)。@DeepSpace-该模式在本例中起作用,但假设注释总是在“//”之后有一个空格,情况并非总是如此,所以我在评论前寻找空白。理论上,评论不能与“;”分开例如,我可以使用一个捕获组来解决这个问题。我只是不明白为什么我制作的正则表达式不起作用!那么
var-test='/'呢…?这个简单的正则表达式会有很多误报。谢谢,但是这个模式也与变量定义
var test\u http=”匹配http://test.com";,这是我试图避免的。Regex用于模式匹配字符串,而不是设计为上下文感知的。如果您想根据匹配的上下文采取不同的操作,则需要花费一些时间开发上下文感知解析器。@kevstev01我在答案中添加了一部分,这可能对您的具体情况有所帮助。感谢您的持久性@Olian04-在我的情况下,所有JS注释前面都会有一个新行或空格,我将多行注释作为一个单独的正则表达式来处理,但由于您的表达,我将您的解决方案与我的解决方案合并,并且我现在使用的正则表达式是
[\n]\/\/[^\n]*.*(?:/\*(?:。\124n)*?\*/)
由@DeepSpace提供的注释突出显示我使用的正则表达式没有正确识别空白字符搜索(\s)作为换行符或空格,所以我将这些字符放在一个特定的单字符列表中,以实现我所需要的。@kevstev01不用担心,很高兴我能提供帮助。