如何在没有其他工具的情况下仅使用正则表达式提取匹配模式

时间:2012-08-23 13:03:53

标签: regex

我需要编写一个正则表达式,在看到"aaa"代码后,这个正则表达式应该只打印6位代码,而不是整行。一行中只有一个6位代码,它位于"aaa"之后。

我无法使用sedawkgrep等。我的应用只接受正则表达式。

示例:

x aaa    y z    123456          returns  123456

aaa  x  654321   y z            returns  654321

我尝试使用反向引用此正则表达式,但不确定如何不重复[\d]{6}

(.*)(aaa)(.*)[\d]{6}((?(2)[\d]{6}|.+)

但它打印整行。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以执行类似

的操作
aaa.+?(\d{6})

然后只返回第一个组(\1

您还可以使用不同正则表达式的反向引用:

(?<=aaa.+?)\d{6}

这意味着您需要aaa之后的前6位数字和任何其他字符。不幸的是,许多语言都不支持可变长度的反向引用,所以我选择第一个语言

相关问题