-2

我有一个字符串

“ZTFN00识别号为89320394,手机号为+918017828848”

我想从关键字 ZTFN 中识别第一次出现的数字(在本例中为 89320394)此外,表达式不应返回带有 ZTFN 的 00,并且只返回第一次出现的数字。

我试过\d+(?!ZTFN00)了,但它不起作用!

请建议

4

3 回答 3

3

这应该这样做:

perl -ne '/ZTFN00\D+(\d+)/ && print $1,"\n"' yourfile

如果您的“数字”始终由空格分隔(ZTFN 后没有 00),那么您可以将其用作测试:

perl -ne 'print m/\b(\d+)\b/,"\n"' yourfile
于 2016-01-22T13:24:03.990 回答
0

多谢你们 !简单来说,我要找的是这个如果有一个字符串,它有一个关键字 ZTFN00,那么正则表达式应该能够在字符串的左侧或右侧返回最接近的 9 到 11 位数字。

我想在 oracle 的 REGEXP_REPLACE 函数中执行此操作。

下面是一些示例字符串

  1. 作为组合的一部分,SAP UPDATE_BP 服务中发生以下错误(错误:653,R11:186:编号 867278489 已存在,用于 ID 类型 ZTFN00)

在上面,正则表达式应返回 867278489

  1. 作为组合的一部分,SAP UPDATE_BP 服务中出现以下错误(错误:653,R11:186:编号 ZTFN00 标识号 123456778 已存在)

在上面,正则表达式应返回 123456778

非常感谢您分享您的专业知识和指导

于 2016-02-08T03:05:53.143 回答
0
grep -Po 'ZTFN00.*?\K\b\d+\b'

ZTFN00返回在该数字之前看到的行中单词边界之间的第一个数字。\K是一个可变长度的后视:“匹配我左边的内容,但不要保留它”。

于 2016-01-22T15:05:03.967 回答