javascript - 正则表达式用 Grails 注释替换 JavaScript 注释

标签 javascript regex grails

我的目标是删除所有渲染为 HTML 的 JavaScript 注释。

在 Grails 中,您可以使用 <%-- comment --%> 样式注释,这些注释不会出现在 HTML 输出中,因此我试图提出一个可用于匹配任何 JS 注释的表达式。我遇到的问题是一些评论已经包含在 <%-- --%>

我可以使用带有负面外观的正则表达式,例如:

 (?<!<%-- )//(.*)

跳过选择类似的内容:

 <%-- // some comment --%>

但我需要在 <%-- 和//

之间有任意数量(包括没有)的空格

例如,正则表达式还需要跳过:

 <%--// some comment --%>
 <%--     // some comment --%>

关于如何实现这一目标有什么想法吗?我承认我在正则表达式方面有点业余。

我在某处读到\s* 可用于可选的空白字符,但我似乎无法找出正确的语法来使其使用它作为后面查找的一部分(或者如果可能的话? )

最佳答案

你的\s* 想法在lookbehind中不起作用,因为在大多数(如果不是全部)GREP版本中,你不能使用可变长度的lookbehind。

两步版本也可以吗?

  1. 删除之前的嵌套注释开始:将 <%--\s*//替换为 <%--
  2. 将剩余的//注释转换为 Grails 符号,就像您已经做的那样。

(编辑)

啊,GREP 的奇迹。经过一番横向思考后:

搜索

(<%--\s*)?//\s*(.+?)(\s*--%>)?$

替换为

<%-- \2 --%>

这假设您的 GREP 方言理解非贪婪修饰符表达式 (.+?) - 在这种情况下有必要防止吞噬结束序列“--%>”(毕竟,它是可选的) ,并将输出加倍。

如果没有,请尝试以下操作:

(<%--\s*)?//\s*(((?!--%>).)*)(--%>)?

替换为相同的。

关于javascript - 正则表达式用 Grails 注释替换 JavaScript 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602995/

相关文章:

javascript - 类型 'void' 必须有一个返回迭代器的 '[Symbol.iterator]()' 方法

javascript - JQuery 无法尝试滚动到 "display: block"

javascript - 为什么 readdirSync() 说没有这样的文件或目录?

java - 正则表达式 - 在 `:` 上分割字符串,但不在 if 语句内分割字符串

grails - Grails 3.0.6 build.gradle错误无法解析配置 ':testRuntime'的所有依赖项

javascript - 如何将时间从一个时区转换为另一个时区,忽略本地时区?

regex - 与单词列表不匹配的单词的正则表达式

c# - 用户名的正则表达式?

java - 从枚举中获取值并在 grails 中的复选框中分配每个值

validation - 在Grails域对象中,是否可以基于另一个字段来验证一个字段?