我正在尝试通过 C# 中的正则表达式删除 JavaScript 注释,但遇到了问题。我想删除所有出现的双斜杠 //
样式注释。
我当前的正则表达式是 (?<!:)//[^\r\n]*
这将捕获所有评论并阻止 http://
的匹配.然而,负面回顾是懒惰的,当然在下面的测试用例中让我反感:
var XSLPath = "//" + Node;
因此,我正在寻找一个正则表达式,该表达式将执行回顾以查看匹配前是否出现偶数个双引号 ( "
)。我不确定这是否可能。或者是否有更好的方法来做到这一点?
最佳答案
(根据评论更新)
看起来效果很好:
(?<=".*".*)//.*$|(?<!".*)//.*$
看来 test cases in Regex Hero证明它会以我认为应该(几乎)的方式匹配评论。
例如,它会完全忽略这一行:
var XSLPath = "//" + Node;
但它足够聪明,可以匹配这一行末尾的注释:
var XSLPath = "//"; // stuff to remove
但是,它还不够聪明,不知道如何处理评论前的 3 个或更多引号。我不完全确定如何在不进行硬编码的情况下解决该问题。您需要一些方法来允许偶数个引号。
关于c# - 正则表达式去除 JavaScript 双斜杠 (//) 风格的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569295/