Регулярное выражение, чтобы найти первое вхождение числа из заданного ключевого слова

У меня есть строка

"Идентификационный номер ZTFN00 89320394 и номер мобильного телефона +918017828848"

и я хочу идентифицировать первое вхождение числа (89320394 в данном случае) из ключевого слова ZTFN. Кроме того, выражение не должно возвращать 00 с ZTFN и возвращать только первое вхождение числа.

Я старался \d+(?!ZTFN00) Но это не работает!!

Пожалуйста, предложите

3 ответа

Это должно сделать это:

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

Если ваш "номер" всегда разделен пробелами (где 00 после ZTFN нет), вы можете использовать это в качестве теста:

perl -ne 'print m/\b(\d+)\b/,"\n"' yourfile
grep -Po 'ZTFN00.*?\K\b\d+\b'

Возвращает первое число между границами слова в строке, где ZTFN00 видно до этого числа. \K - это задний план переменной длины: "соответствуйте тому, что слева от меня, но не сохраняйте его".

Спасибо, парни! Говоря простым языком, я ищу следующее: если есть строка с ключевым словом ZTFN00, то регулярное выражение сможет возвращать ближайший номер от 9 до 11 цифр слева или справа от строки.

Я хочу сделать это в функции REGEXP_REPLACE оракула.

Ниже приведены примеры строк

  1. Следующая ошибка произошла в службе SAP UPDATE_BP в составе комбината (ошибка:653, R11:186: номер 867278489 уже существует для типа идентификатора ZTFN00)

В приведенном выше, регулярное выражение возвращает 867278489

  1. Следующая ошибка произошла в службе SAP UPDATE_BP в составе комбината (ошибка:653, R11:186: идентификационный номер ZTFN00 с номером 123456778 уже существует)

Выше, регулярное выражение должно возвращать 123456778

Большое спасибо за то, что поделились своим опытом и руководством

Другие вопросы по тегам