Регулярное выражение, чтобы найти первое вхождение числа из заданного ключевого слова
У меня есть строка
"Идентификационный номер 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 оракула.
Ниже приведены примеры строк
- Следующая ошибка произошла в службе SAP UPDATE_BP в составе комбината (ошибка:653, R11:186: номер 867278489 уже существует для типа идентификатора ZTFN00)
В приведенном выше, регулярное выражение возвращает 867278489
- Следующая ошибка произошла в службе SAP UPDATE_BP в составе комбината (ошибка:653, R11:186: идентификационный номер ZTFN00 с номером 123456778 уже существует)
Выше, регулярное выражение должно возвращать 123456778
Большое спасибо за то, что поделились своим опытом и руководством