【发布时间】:2017-06-25 00:57:18
【问题描述】:
我有一个文本,并尝试将链接添加到其中的每个大小为 3 的数字。
我将 preg_match_all 与一个模式一起使用:(^|[^\d])(\d{3})($|[^\d])
此处使用分组来仅将链接添加到数字,而不是添加到它们的邻居。
测试用例是:
-
a 123 234 b- 必须匹配 123 和 234 -
a 123_234 b- 必须匹配 123 和 234 -
aa123 234 b- 必须匹配 123 和 234 -
a0123 234 b- 必须匹配仅 234 -
123a234 b- 必须匹配 123 和 234 -
a 123 234- 必须匹配 123 和 234
测试 2 和 3 工作正常,其他测试因 2 个数字之间的空格而失败。
如何匹配两个数字之间只有 1 个空格?
【问题讨论】:
-
另外,您可以“修复”您的正则表达式,只需将最后一个捕获组替换为正向前瞻
(^|[^\d])(\d{3})(?=$|[^\d]),以允许重叠匹配。我建议使用环视,因为这样看起来“更干净”。见regex101.com/r/27pWL2/1。 Surley,如果您更喜欢这种方法,我会将[^\d]替换为\D。
标签: php regex preg-match-all