0

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

我不能使用sed, awk, grep... 等。我的应用程序只接受正则表达式。

例子:

x aaa    y z    123456          returns  123456

aaa  x  654321   y z            returns  654321

[\d]{6}我用反向引用尝试了这个正则表达式,但不知道如何不重复

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

但它会打印整行。

有什么建议么?

4

1 回答 1

0

你可以做类似的事情

aaa.+?(\d{6})

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

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

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

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

于 2012-08-23T13:12:26.860 回答