Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何仅使用正则表达式而不使用其他工具提取匹配模式_Regex - Fatal编程技术网

Regex 如何仅使用正则表达式而不使用其他工具提取匹配模式

Regex 如何仅使用正则表达式而不使用其他工具提取匹配模式,regex,Regex,我需要编写一个正则表达式,在看到“aaa”代码后,这个正则表达式应该只打印6位代码,而不是整行。一行中只有一个6位代码,它位于“aaa”之后 我不能使用sed,awk,grep。。。我的申请只接受正则表达式 示例: x aaa y z 123456 returns 123456 aaa x 654321 y z returns 654321 我用backreference尝试了这个正则表达式,但不确定如何不重复[\d]{6} (

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

我不能使用
sed
awk
grep
。。。我的申请只接受正则表达式

示例:

x aaa    y z    123456          returns  123456

aaa  x  654321   y z            returns  654321
我用backreference尝试了这个正则表达式,但不确定如何不重复
[\d]{6}

(.*)(aaa)(.*)[\d]{6}((?(2)[\d]{6}|.+)
但它会打印整行


有什么建议吗

你可以这样做

aaa.+?(\d{6})
然后只返回第一组(使用
\1

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

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

(?一行中只有一个6位数的代码…难道你不能直接去“\d{6}”'x 123456 y.匹配(/\b\d{6}\b/);//[“123456”]看不到网站,请把它放在rubular上好吗?如果你说的是第二个正则表达式,问题是,正如我在回答中所说的,许多语言不支持可变长度lookbehind,因此第一个分组选项是唯一有效的,你必须只输出
\1
grouphmlookbehinds。即使是rubular也似乎将其标记为无效的正则表达式。不过,第一个表达式似乎很好。是的,这是一个问题,我经常需要可变长度的lookbehinds,并且经常需要使用此解决方法:\n感谢您的所有评论。我现在明白了。