gpt4 book ai didi

java - 正则表达式删除除括号内的所有注释

转载 作者:行者123 更新时间:2023-12-01 14:01:46 25 4
gpt4 key购买 nike

我有一个正则表达式,可以很好地找到单行和多行注释,但我想排除括号内的注释。我认为我需要一个消极的前瞻,但一直无法让它发挥作用。

正则表达式:

(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)

要忽略的内容示例:

url(data:image/gif;base64,R0lGODlhBgAGAIAAAOrq6v///yH5BAAHAP8ALAAAAAYzqlgoFADs=)
src: url(//:) format('no404')

如有任何帮助,我们将不胜感激。

最佳答案

使用 Java 正则表达式无法直接确保 // 位于一对括号内。但是您可以随意检查下一个括号是否是右括号(如果是,则拒绝匹配)。当然,只有在没有嵌套括号并且注释中没有括号的情况下才有效:

//(?![^()\\r\\n]*\\)).*

会这样做。

至于正则表达式的第一部分与 /*...*/ 注释匹配 - 我认为这有点过于复杂。由于 Java 不允许嵌套注释,

/\\*.*?\\*/

就可以了。您只需要确保允许点与正则表达式的这一部分中的换行符匹配:

Pattern regex = Pattern.compile("(?s)/\\*.*?\\*/|(?-s)//(?![^()\r\n]*\\)).*");

关于java - 正则表达式删除除括号内的所有注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com