【发布时间】:2020-03-10 19:05:43
【问题描述】:
假设我们得到以下字符串:
a, b, c, d
e, f, g, h
i, j, k, l
我希望使用 PCRE 正则表达式将其转换为以下字符串:
ab, ac, ad
ef, eg, eh
ij, ik, il
更一般地,这些字母中的每一个都可以看作是一串单词字符的占位符,每行可以有任意数量的字符,也可以有任意数量的行。
如果做不到,能否产生如下字符串?
a, ab, ac, ad
e, ef, eg, eh
i, ij, ik, il
请在 regex101.com 上使用“SUBSTITUTION”工具(可以包括反向引用,例如 $1)演示您的正则表达式。我会特别感谢 PCRE 引擎如何单步执行字符串的解释。
如果这不能用 PCRE 正则表达式完成,我想解释一下为什么它不能完成。
我问这个问题是为了加深我对环视内捕获组如何工作的理解。
【问题讨论】:
-
我认为不需要环顾四周。只是普通的捕获组。
-
只写一个正则表达式匹配两个用逗号分隔的单词,可选地后跟另一个逗号。将单词和可选逗号放在捕获组中,并将它们复制到替换中。
-
“请演示您的正则表达式...”听起来像是您从练习中引用的,而不是您自己的问题。
-
我没有注意到每个替换都包含该行的第一个单词,它们不是成对的。我不认为你可以用一个正则表达式来做到这一点,它们不能循环。
-
@Barman,我认为那是因为您在这个论坛上习惯于模糊、模棱两可的问题。我提出这个问题是为了了解我不理解的正则表达式的各个方面,并试图使问题完整且明确。请按面值接受。