我正在尝试通过C#中的正则表达式删除javascript注释并且已经卡住了。我想删除任何出现的双斜杠//
样式注释。
我当前的正则表达式是(?<!:)//[^\r\n]*
,它会捕获所有评论并阻止http://
的匹配。然而,负面的背后隐藏是懒惰的,当然还会让我回到以下测试案例中:
var XSLPath = "//" + Node;
所以我正在寻找一个正则表达式,它将执行一个lookbehind以查看匹配前是否出现了偶数个双引号("
)。我不确定这是否可行。或者也许有更好的方法来做到这一点?
答案 0 :(得分:2)
(根据评论更新)
看起来效果非常好:
(?<=".*".*)//.*$|(?<!".*)//.*$
test cases in Regex Hero似乎表明它会以我认为应该(几乎)的方式匹配评论。
例如,它将完全忽略这一行:
var XSLPath = "//" + Node;
但它足够聪明,可以匹配这一行末尾的评论:
var XSLPath = "//"; // stuff to remove
然而,在评论之前知道如何处理3个或更多引号并不够聪明。我不完全确定如何在不对其进行硬编码的情况下解决该问题。你需要一些方法来允许偶数引号。