我正在尝试为我的问题创建一个适当的正则表达式,但显然遇到了奇怪的问题。
让我描述一下我正在尝试做的事情..
我的目标是从字符串的两端删除逗号。例如,字符串, ,, ,,, , , Hello, my lovely, world, ,, ,
应该变成 just Hello, my lovely, world
。
我准备了以下正则表达式来完成此操作:
(\w+,*? *?)+(?=(,?\W+$))
它在正则表达式验证器中就像一个魅力,但是当我尝试在 Android 设备上运行它时,matcher.find()
函数会挂起约 1 分钟以找到合适的匹配项......我认为,问题出在我正在使用的积极前瞻中,但是除了从开头和结尾分别修剪逗号之外,我找不到任何更好的解决方案:
output = input.replaceAll("^(,?\\W?)+", ""); //replace commas at the beginning
output = output.replaceAll("(,?\\W?)+$", ""); //replace commas at the end
在 Java 正则表达式的积极前瞻中我是否缺少一些东西?如何检索开头和结尾逗号之间的字符串部分?