Вопрос по регулярным выражениям
Уважаемые форумчане!
Никак не получается составить шаблон для того, чтобы выделить весь текст, идущий после определенной начальной точки и до конца, при этом он не должен включать определенные подстроки.. Если конкретно, то есть текст: подстрока 1 </a> <a>подстрока 2</a>подстрока 3< в этом тексте нужно выделить все что идет после </a>, и так, чтобы не включая </a>, иными словами все, начиная с последнего вхождения </a> (т.е. подстроку 3) Составлял что-то типа: <\/a>.*?(?!<\/a>)$ но это все естественно неверно. Кто знает, подскажите, пожалуйста, как правильно составить регулярку в этом случае? Заранее большое спасибо! |
alert(/.*<\/a>(.*)/.exec('подстрока 1 </a> <a>подстрока 2</a>подстрока 3<')[1]) |
хм..
а не могли бы Вы объяснить, почему выделяется "подстрока 3", а не " <a>подстрока 2</a>подстрока 3"? если честно, то мне надо составить PCRE регулярку.. видимо они порядком отличаются от JavaScript-овских, потому что на php ".*<\/a>(.*)" не работает. |
И не будет. т.к. Вы видимо синтаксис регулярных выражений в php не прочитали.
А выделяет он последнюю, т.к. оператор "*" имеет "жадность" и он будет хватать все до последнего, пока условие "</a>" возможно. Как только оно не возможно, все схваченное и попадает под ".*" для php: preg_match("/.*<\/a>(.*)/",$str,$m); echo $a[1]; незабываем что "</A>" сюда не пройдет, для этого надо вконце вставить флаг "i": для JS: /.*<\/a>(.*)/i.exec(...); для PHP: preg_match("/.*<\/a>(.*)/i", ... ) |
Часовой пояс GMT +3, время: 16:02. |