Как правильно выделить текст через регулярное выражение?
Всем привет! Мне необходимо выбрать текст который находится между тэгами. Возможно я ошибаюсь, т.к. давно не пользовался РВ, но раньше это работало <тэг>.*</тэг> и выделялся текст внутри указанных тэгов. Но у меня почему то выделяется всё целиком, вместе с тэгами.
Если я что-то не так делаю, поправьте. Подскажите как тогда будет выглядеть команда?
dodo512, Да, работает так, спасибо. А почему интересно <тэг>(.*)</тэг> не работает? ) Ведь я точно помню, что работало так, и в интернете пишут что такой командой ищется содержимое между тэгов.
Сослан Хлоев, спасибо, ниже тоже уже написали пример, всё работает ) Но я же точно помню, что это работало <тэг>(.*)</тэг> , почему сейчас не работает? Может что- то изменилось?
Senseich, не работает по двум причинам. Первая - вам нужно экранировать правый слэш левым слэшом (/ -> \/), вторая - совпадение этой регулярки - вся строка вместе с тэгом, а вот нужный вам кусок внутри тэгов - это уже кусок под индексом 1.
Собственно если бы вы делали замену, с вашей <тэг>(.*)<\/тэг>, то вы бы могли использовать $1 что бы подставить значение, которое регулярка захватила внутри скобок. В случае же поиска, notepad++, вполне правильно показывает полное значение (то есть $0, то есть весь ваш <тэг>тексттэг>). Возможно в старых версиях нотпада по-умолчанию показывалось значение $1, но это явно не правильно.
Поэтому и нужна регулярка типа (?<=<тэг>).*(?=</тэг>), которая говорит, что вся строка совпадения ($0) - исключает те части, которые обернуты в (?<= и ).
Alex Wells, да, скорей всего у меня это работало, когда я производил замену. А сейчас мне понадобилось именно выделение. Возможно я раньше просто не замечал, что подсвечивается вся строка с тэгами.