问题是-我需要删除文件(Java代码)中的所有注释,因此//this

/*  Multiline  */ 

评论应删除。 我正在尝试通过这样做来实现

text = text.replaceAll($/(//.*\n)|(/\*[.\n]*\*/)/$, "")

但仅从字符串中删除了单行注释。 https://regex101.com/显示我需要的所有内容都匹配,您能指出一个问题吗?

#1楼 票数:1 已采纳

您必须打开DOTALL模式才能将\\n与匹配. 在Java / Groovy正则表达式中。 可以通过在模式中嵌入(?s)来打开它。 这是一个工作示例:

def pattern = $/(//.*)|(?s)/\*.*\*//$
def singleLine = '''
    code // single line comment
    code
'''
def multiLine = '''
    code /* multi line
    comment */ code
'''
assert singleLine.replaceAll(pattern, '') == '\n    code \n    code\n'
assert multiLine.replaceAll(pattern, '') == '\n    code  code\n'

#2楼 票数:0

您可以使用以下正则表达式

(\/\*.*(\n.*\n)*\*\/)|(\s*\/\/.*\n)

Regex101上的工作演示

  ask by Yaroslav translate from so

未解决问题?本站智能推荐:

1回复

Regexp导致无限挂起

我有以下regexp,它永远不会评估并无限挂起: 问题在于部分(.*[\\r\\n]*) 。 当我将其更改为(.*[\\r\\n]+) ,它可以正常工作。 你可以在这里试验regexp。 谁能解释一下怎么可能?
4回复

regexp模式帮助java/groovy

我正在尝试解析这样的事情: Key1=[val123, val456], Key2=[val78, val123] 到Map<String, List<String>>问题是键和值都可能有非alpha字符,如.:-_ 这看起来像我应该能够使用正则表达式模式匹配/组
1回复

在Groovy中用RegExp分割字符串

好吧,我在xml-response中放置了很多符号,像这样: 使用xmlSlurper仅保留数字 在此“节点”获得类似“ 1239071123907112390711231239071”的值后,我尝试将Java RegExp放入7分隔数字 我哪里做错了? 它不起作用
2回复

使用regexp作为键的hashmap,groovy/java

我遇到了一个问题: 是否可以将regexp用作hashmap中的键? 例如: 当然,返回null值。 最好的祝福
2回复

常规的正则表达式修饰符…添加评论

Groovy中有没有办法忽略正则表达式中的空格并添加注释? 这对于复杂的正则表达式非常有用。 示例...我有一个DateTime实用程序类,该类分析datetime字符串的各种变体。 给定一个匹配日期时间的正则表达式... 在perl中,您可以添加/x修饰符以拆分正则表达式并添加注释
2回复

Groovy删除多行注释

如何使用groovy删除多行注释? 我将上述文本从文件读入文件对象,然后将其转换为字符串。 如果注释只占一行,我可以使用replaceAll方法将其删除,如下所示: 我尝试使用(?m)标志,但是无法识别它的模式。 我尝试了以下语句,但它们均与我的模式不匹配。 我考虑过使用DotA
2回复

StingBuilder-删除所有HTML标记,除了

我有一个字符串生成器对象“ sb”,看起来像- 这只是一个示例,它可以具有任何种类的html标签。 如何从对象中删除所有可能的HTML标记(除了br标记)。 我一直在尝试使用下面的代码从sb对象中删除所有html标记,但是它似乎不起作用。 另外,不确定如何为br标签设置例外。
1回复

如何使用Groovy删除仅包含数字的xml标记

我有以下 XML 示例: 我想最终只有用户......就像这样...... 我已经使用正则表达式去掉了 XML 声明行……但是现在我需要删除整数标签并只获取 USER 标签这是我到目前为止。 我被正则表达式部分绊倒了..(我想!) 任何帮助表示感谢