#regex #lookaround
#регулярное выражение #посмотрите вокруг
Вопрос:
Короче говоря, я пытаюсь подобрать слово, которое стоит после определенного слова.
Итак, у меня есть строка, которая
Name=James
Age=55
City=New York
Теперь я хочу выбрать все после «Age =», но не включая «Age =».
Короче говоря, я хочу выбрать только «55». В конце каждой строки есть символ новой строки. Теперь я посмотрел на Внешний вид, как
(?!(Age)).*r
Что не работает.
открыт для предложений здесь.
Ответ №1:
То, что вы ищете, — это «позитивный взгляд сзади».
(?<=your pattern)
Это выглядит за текущим местоположением, и оно должно совпадать.
Итак, в вашем случае вы хотите сделать:
(?<=Age=).*$
Комментарии:
1. Спасибо… Я запустил тест в Oracle (используя REGEXP_SUBSTR), и он по-прежнему возвращает null. Я даже проверил несколько веб-сайтов и приложение Notepad с помощью RegExp, и оно ничего не вернуло, я быстро что-то придумал на Java, и это работает, так что спасибо, я не схожу с ума
Ответ №2:
Попробуйте это:
(?<=Age=).*
Вы должны использовать поиск сзади.
Имейте в виду, что не все регулярные выражения имеют lookbehind (например, Javascript не имеет)
Ответ №3:
"(?<=Age=).*$"
kent$ echo "Name=James
dquote> Age=55
dquote> City=New York "|grep -Po "(?<=Age=).*$"
55
Ответ №4:
Ответ таков (?<=Age=)w
w соответствует любому символу слова (a-z, 0-9)