我需要使用 PCRE 正则表达式在一行中提取电子邮件和邮政编码。该行可能包含任意顺序的其他字段。每个字段如果退出,只会出现一次。仅当两个字段都存在时, Regex 才会打印结果。
我写了这个正则表达式,但显示了整行
^(?=.*?[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b)(?=.*?\b[\d]{5}\b).*$
例子:
f1 f2 11061 f3 abc@mydom.com f4
打印 ==> 11061 abc@mydom.com
f1 f2 f4 f3 xyz@mydom.com 10018
打印 ==> xyz@mydom.com 10018
f2 f4 10048 f3
打印 ==> ( null )
有没有办法只打印匹配的模式?