Определить заданное количество вкладок в Regex lookbehind (pcregrep)
Я использую pcregrep, чтобы найти шаблоны над несколькими строками в HTML-коде.
Я пытаюсь сопоставить что-то похожее на это:
<some-html-stuff>
sometext<more-html-stuff>
Пространство между sometext
и начало строки равно точно шести вкладкам. Поскольку выражение \s
соответствует вкладкам, переносам строк и пробелов, я думал, что
pcregrep -M -o -H "(?<=some-html-stuff\>[\s]{7})[A-Za-z0-9]*" /path/file.html
сделал бы работу для меня. но это не так (я добавил еще один для перерыва). Я на самом деле пробовал это с несколькими вариациями числа, но ни один не работает.
Что я наблюдал?
редактировать:
матч должен быть sometext
без каких-либо пробелов раньше.
2 ответа
Вы могли бы использовать \K
вместо того, чтобы смотреть назад,
pcregrep -M -o -H "<some-html-stuff\>\s*\K[A-Za-z0-9]+" /path/file.html
ИЛИ ЖЕ
pcregrep -M -o -H "some-html-stuff\>\n\t{7}\K[A-Za-z0-9]+" /path/file.html
Это регулярное выражение будет работать для вас:
(?<=some-html-stuff\>\n\s{7})([A-Za-z0-9]+)
Вам нужно вставить \n
Перед использованием \s{7}
чтобы соответствовать 7 вкладок ИЛИ еще использовать \s{8}
как это:
(?<=some-html-stuff\>)\s{8}([A-Za-z0-9]+)
поскольку \s
также соответствует \n
,