【发布时间】:2014-03-22 20:41:35
【问题描述】:
在 Perl 中,匹配下面的正则表达式 a11a、g22g、x33x 这样的文本模式可以正常工作
([a-z])(\d)\g2\g1
现在我想匹配类似于上面的重复组,但在单词之间有空格
abcd 101 abcd 101(在单行文本或段落中以单个正则表达式模式捕获整个字符串)
如何做到这一点...我尝试了以下模式,但它不会工作
([a-zA-Z]*\s)([0-9]*\s)\g1\g2
#logic is : words followed by space in 1 group and
#numbers followed by space in 2nd group
另外,请解释为什么上述正则表达式无法捕获所需的文本模式!!!
编辑
还有一个复杂的问题:
假设模式类似于
[words][space][numbers][space][words][space][numbers]
#assume all [numbers] and [word] are same
....所以在最后一个[numbers] 的情况下,[space] 没有遵循,那么如何过滤...因为正则表达式组捕获如下:
([0-9]*\s) 如果重复,肯定无法捕获最后一部分,并且
([0-9]*) 如果重复,将无法捕获中间部分! ??
Regex 101
【问题讨论】: