@perfiliy

Как найти самое первое вхождение числа между двух тегов, а все остальное отсечь?

Всем привет!

Есть несколько сотен текстов, заканчивающихся разнообразными датами их написания. Необходимо извлечь только первое вхождение 4-значного числа (года написания), а все остальное отсечь.

Сейчас годы написания текстов выглядят примерно так:
1. <em>Осень, 1920-1921, или 1922 год</em>
2. <em>12 сентября 1919</em>
3. <em>1922</em>

Очень хотелось бы, чтобы эти же примеры после обработки выглядели так:
1. <em>1920</em>
2. <em>1919</em>
3. <em>1922</em>

Собственных сил не хватило, поэтому очень буду благодарен за помощь.
Спасибо!
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
@StockholmSyndrome
.*?(\d{4}).* заменить на \1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@perfiliy Автор вопроса
Stockholm Syndrome, еще разок хочется обратиться к вам за помощью. Прошерстил интернет, но так и не нашел решения. Если встречается вот такая строка:
<em>Какой-то текст</em><p>Какой-то текст</p><em>Осень, 1920-1921, или 1922 год</em>

То указанная формула "<em>.*?(\d{4}).*</em> заменить на <em>\1</em>" не срабатывает и проглатывается все, что было между первым и последним тегами em. Можно ли это как-то обойти? Чтобы срабатывало только в пределах нужных тегов <em></em>.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы