Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.08.2010, 21:52
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

Вопрос по регулярным выражениям
Уважаемые форумчане!
Никак не получается составить шаблон для того, чтобы выделить весь текст, идущий после определенной начальной точки и до конца, при этом он не должен включать определенные подстроки..

Если конкретно, то есть текст:

подстрока 1 </a> <a>подстрока 2</a>подстрока 3<


в этом тексте нужно выделить все что идет после </a>, и так, чтобы не включая </a>, иными словами все, начиная с последнего вхождения </a> (т.е. подстроку 3)

Составлял что-то типа:
<\/a>.*?(?!<\/a>)$

но это все естественно неверно.

Кто знает, подскажите, пожалуйста, как правильно составить регулярку в этом случае?

Заранее большое спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2010, 22:17
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

alert(/.*<\/a>(.*)/.exec('подстрока 1 </a> <a>подстрока 2</a>подстрока 3<')[1])
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2010, 22:55
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

хм..
а не могли бы Вы объяснить, почему выделяется "подстрока 3", а не " <a>подстрока 2</a>подстрока 3"?

если честно, то мне надо составить PCRE регулярку.. видимо они порядком отличаются от JavaScript-овских, потому что на php ".*<\/a>(.*)" не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2010, 17:34
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

И не будет. т.к. Вы видимо синтаксис регулярных выражений в php не прочитали.

А выделяет он последнюю, т.к. оператор "*" имеет "жадность" и он будет хватать все до последнего, пока условие "</a>" возможно. Как только оно не возможно, все схваченное и попадает под ".*"

для php:

preg_match("/.*<\/a>(.*)/",$str,$m); echo $a[1];


незабываем что "</A>" сюда не пройдет, для этого надо вконце вставить флаг "i":
для JS:
/.*<\/a>(.*)/i.exec(...);

для PHP:
preg_match("/.*<\/a>(.*)/i", ... )
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50
Вопрос по регулярным выражениям demoniqus Общие вопросы Javascript 0 04.03.2009 11:08
мааленький вопрос по Regexp:) mirniy Общие вопросы Javascript 1 22.01.2009 20:47
вопрос по long poll megaswin AJAX и COMET 2 27.05.2008 09:20