我需要编写一个正则表达式,在看到"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}|.+)
但它打印整行。
有什么建议吗?
答案 0 :(得分:0)
您可以执行类似
的操作aaa.+?(\d{6})
然后只返回第一个组(\1
)
您还可以使用不同正则表达式的反向引用:
(?<=aaa.+?)\d{6}
这意味着您需要aaa之后的前6位数字和任何其他字符。不幸的是,许多语言都不支持可变长度的反向引用,所以我选择第一个语言