Приветствую.
Как выбрать вхождение в строке, которое начинается с подстроки, после которой может быть любое количество симболов, но не забирать эту подстроку?
Примеры строк (в документе строка одна, здесь просто несколько разных)
<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+(?= *)
Забирается слишком много ненужного.
Песочница