Как исключить подгруппу из группы в регулярном выражении?
Есть строка: <Н1 class="class1 class2">qweqweqwe</Н1>
и есть регулярка вида (<Н1.*?>.*?</Н1>)
как ее изменить таким образом, чтобы в результате в группу попало только <Н1>qweqweqwe</Н1>
То есть — выкинуть то, что будет «захвачено» первыми ".*?"
Важное доп. условие, из-за которого я не разбил группу на несколько: группа в итоге должна быть только одна — особенности архитектуры…
Да промахнулся) Чтобы выбрать группу без вложенных элементов думаю не прокатит, но что мешает выбирать те фрагменты, которые нужно удалить, и заменять на пустую строку?
(?<=<Н1)(.*?)(?=>.*?</Н1>) выбирает только " class=\«class1 class2\»" и если прогнать через джавовский replaceAll(), например, то получим вроде как именно то, что хотим.
Такой вариант не рассматривали?
Потому что у меня множество шаблонов регулярок и нужно унифицировать возвращаемые данные, чтобы не писать лишнюю обертку-адаптер. Это тот редкий случай, когда микросекунды критичны.
и что, ваши регулярки хранятся в памяти все откомпилированные, а код программы на си/джаве? если нет, то тогда вы экономите на спичках и нежелание пересматривать архитектуру обусловлено ленью