c# - 正则表达式去除 JavaScript 双斜杠 (//) 风格的注释

标签 c# .net regex

我正在尝试通过 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/

相关文章:

.net - Windows Identity Foundation - 第三方安全 token 服务器

c# - 可以在其他命名空间中访问内部类吗?

Java 正则表达式 : Splitting based on multiple conditions with exceptions

c# - 使用 Azure 移动服务中的脱机表时 CreatedAt 属性为 null

c# - 定义要使用 dotnet watch 运行的命令

c# - 如何在 Windows Phone 7 上将 BitmapImage 调整为 50x50?

Python 正则表达式单词边界出现意外结果

regex - Perl CLI 就地字符串替换/用特殊字符替换多行

c# - 按货币值(value)排序列表

c# - HTTP/1.1 415 无法处理消息,因为内容类型 'application/json; charset=utf-8' 不是预期的类型 'text/xml; charset=utf-8'