【发布时间】:2016-11-14 09:35:53
【问题描述】:
假设我有一个这样的字符串:abc def ghi jkl(为了简单起见,我在末尾放了一个空格,但这对我来说并不重要)并且我想捕获它的“块”,如下所示:
abc
def
ghi
jkl
当且仅当字符串中有 1-4 个“块”。我已经尝试过以下正则表达式:
^([^ ]+ ){1,4}$
在 Regex101.com,但它只捕获最后一次出现。发出警告:
重复捕获组将仅捕获最后一次迭代。如果您对数据不感兴趣,请在重复组周围放置一个捕获组以捕获所有迭代或使用非捕获组
如何修正正则表达式以达到我的目的?
【问题讨论】:
-
这是一个 XY 问题。用空格拆分/分解字符串并检查结果数组是否包含 4 个非空元素。但是,可以使用 PCRE 而不是 POSIX 之一来检查和匹配多个后续事件(不是捕获)。
-
好的,所以我可以仅使用编程语言而不涉及正则表达式来“手动”执行此操作,但有更自动的解决方案吗?事实上,它旨在成为更复杂表达式的一部分。我可以接受 PCRE。
-
如果您的可执行文件只允许访问捕获组值,则没有适合您的解决方案。
-
您能解释一下 PCRE 解决方案吗?我在您编辑之前添加了我的评论...