Regex 对java样式的注释使用正则表达式时堆栈溢出
我目前正在用Scala编写一个解析器,我希望将我的空格定义为与空格和java样式的/**/注释匹配。我不需要那个角色 目前我使用的定义是:Regex 对java样式的注释使用正则表达式时堆栈溢出,regex,performance,stack-overflow,Regex,Performance,Stack Overflow,我目前正在用Scala编写一个解析器,我希望将我的空格定义为与空格和java样式的/**/注释匹配。我不需要那个角色 目前我使用的定义是: """((\s+)|(?:/\*(?:[^*]|(?:\*+[^*/]))*\*+/))*""".r 我在本页上找到了这一定义的大部分: 问题是,当匹配输入时,我得到了堆栈溢出。但是,将堆栈大小调整到1MB可以解决这个问题。不幸的是,这在我的生产系统中是不可能的。 所以我想问的是,是否有人能帮我改进正则表达式 非常感谢您的帮助,因为我只是Regex领域的
"""((\s+)|(?:/\*(?:[^*]|(?:\*+[^*/]))*\*+/))*""".r
我在本页上找到了这一定义的大部分:
问题是,当匹配输入时,我得到了堆栈溢出。但是,将堆栈大小调整到1MB可以解决这个问题。不幸的是,这在我的生产系统中是不可能的。
所以我想问的是,是否有人能帮我改进正则表达式
非常感谢您的帮助,因为我只是Regex领域的新手:
提前谢谢
向Stefan致意。使用普通*特殊普通**模式进行评论。您将需要多行匹配
这里,special后面不跟a/而normal后面不跟*。不带引号的正则表达式是
特别是\*?!/;
正常值为[^*]。
我不知道scala,但您需要定义一个特殊变量,一个普通变量,使用:
/\****\*/
这将吞噬您的空白,而不必担心堆栈溢出