【发布时间】:2014-07-08 09:42:48
【问题描述】:
我有一个输入字符串:
12345,3244,654,ffgv,87676,988ff,87657
我很难使用正则表达式将字符串中不是五位数字的所有项转换为常量 34567。所以,输出会是这样的:
12345,34567,34567,34567,87676,34567,87657
为此,我查看了两个选项:
否定字符类:没用,因为它不直接在这个表达式上执行
,[^\d{5}],lookahead and lookbehind:这里的问题是它在此表达式的结果中不包含不匹配的部分
,(?!\d{5})或(?<!\d{5}),用于替换/替换.
一旦找到所需的表达式,它将给出一个结果,以便可以使用标记区域(如\1、\2)替换不匹配的部分。
正则表达式工具中是否有任何机制来实现上例中提到的输出?
编辑:我非常感谢那些回答非正则表达式解决方案的人,但如果您提供基于正则表达式的解决方案,我将更加感激。
【问题讨论】:
-
那么,Python、JavaScript 还是 Perl?您使用什么语言?
-
@Сухой27:这个问题没有提到语言,而且正则表达式大多与语言无关。如果要添加语言标签,它应该是一个,并且只有一个,OP 提到的某处......
-
@Cerbrus 如果 Python 被错误标记,我很抱歉。恕我直言,正则表达式是从 Perl 演变而来的。 PHP 基于 Perl,就像基于 Ruby 的 RoR。我正在使用带有 PHP 后端的 JavaScript 工作。我目前正在重构网站,从繁重的服务器端查询执行转移到 MVC 框架。在 PHP 中,我在 PHP 中遇到了同样的问题,但我解决了使用 split 函数和围绕数组循环的工作。现在,它是 JavaScript。但是 Perl 中的正则表达式可以很容易地适应任何语言。我认为 Python 是 Perl 的脚本姐妹,所以我可能已经标记了 Python。
-
所以你必须加上
PHP标签,一个你一开始就错过的标签。顺便说一句,RoR 是 Ruby 框架,PHP 不是 Perl 框架。 -
感谢您的建议。我已经重新标记了这个问题。
标签: javascript regex