正则表达式删除javascript双斜杠(//)样式注释

时间:2009-10-14 22:10:35

标签: c# .net regex

我正在尝试通过C#中的正则表达式删除javascript注释并且已经卡住了。我想删除任何出现的双斜杠//样式注释。

我当前的正则表达式是(?<!:)//[^\r\n]*,它会捕获所有评论并阻止http://的匹配。然而,负面的背后隐藏是懒惰的,当然还会让我回到以下测试案例中:

var XSLPath = "//" + Node;

所以我正在寻找一个正则表达式,它将执行一个lookbehind以查看匹配前是否出现了偶数个双引号(")。我不确定这是否可行。或者也许有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

(根据评论更新)

看起来效果非常好:

(?<=".*".*)//.*$|(?<!".*)//.*$

test cases in Regex Hero似乎表明它会以我认为应该(几乎)的方式匹配评论。

例如,它将完全忽略这一行:

var XSLPath = "//" + Node;

但它足够聪明,可以匹配这一行末尾的评论:

var XSLPath = "//"; // stuff to remove

然而,在评论之前知道如何处理3个或更多引号并不够聪明。我不完全确定如何在不对其进行硬编码的情况下解决该问题。你需要一些方法来允许偶数引号。