@AndreyBLG

Как выбрать вхождение в строке, которое начинается с подстроки, но не забирать ее?

Приветствую.
Как выбрать вхождение в строке, которое начинается с подстроки, после которой может быть любое количество симболов, но не забирать эту подстроку?

Примеры строк (в документе строка одна, здесь просто несколько разных)
<body class="archive tax-cat term-foo term-23 some-class"> - нужно получить "term-23"
<body class="archive tax-cat term-qwerty term-23 some-class"> - нужно получить "term-23"
<body class="page sss page-id-23 some-class"> - нужно получить "page-id-23"
<body class="post bbb postid-23 some-class "> - нужно получить "postid-23"

Описание:
Нужно выбрать указанные в примерах выше значения в строке, которая начинается с открывающего тега body, за которым идет любое количество любых символов, затем искомое значение, а после может быть что-то еще, а может не быть.

Выражение (его нужно изменить или дополнить, т.к. сейчас оно заведомо не рабочее)
(?<=\<body)(term|postid|page-id)-\d+(?= *)
После "body" нужна .* но так получается ошибка "A quantifier inside a lookbehind makes it non-fixed width".

Если сделать так
(?<=\<body).*(term|postid|page-id)-\d+(?= *)
Забирается слишком много ненужного.

Песочница
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@dzhebrak
Можно так сделать:
<body.+?((term|postid|page-id)-\d+).*?">
В группе 1 будет нужное значение.

https://regex101.com/r/CiCnnr/1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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