我有一个字符串
“ZTFN00识别号码是89320394,手机号码是+918017828848”
我想从关键字ZTFN中识别出第一次出现的数字(在这种情况下为 89320394 )。此外,表达式不应使用ZTFN返回00,并且仅返回第一次出现的数字。
我尝试了\d+(?!ZTFN00)
,但它不起作用!!
请建议
答案 0 :(得分:3)
这应该这样做:
perl -ne '/ZTFN00\D+(\d+)/ && print $1,"\n"' yourfile
如果您的'号码'总是以空格分隔(在ZTFN之后没有00),那么您可以将其用作测试:
perl -ne 'print m/\b(\d+)\b/,"\n"' yourfile
答案 1 :(得分:0)
grep -Po 'ZTFN00.*?\K\b\d+\b'
返回在该数字之前看到ZTFN00
的行中的字边界之间的第一个数字。 \K
是一个可变长度的后视:“匹配我左边的内容,但不保留它”。
答案 2 :(得分:0)
谢谢你们! 简单来说,我正在寻找的是这个 如果有一个字符串,它有一个关键字ZTFN00,那么正则表达式应该能够将最接近的9到11位数字返回到字符串的左侧或右侧。
我想在oracle的REGEXP_REPLACE函数中执行此操作。
以下是一些示例字符串
在上面,正则表达式将返回867278489
在上面,正则表达式将返回123456778
非常感谢您分享您的专业知识和指导