Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2009, 15:37
Новичок на форуме
Отправить личное сообщение для AlbusFalco Посмотреть профиль Найти все сообщения от AlbusFalco
 
Регистрация: 13.08.2009
Сообщений: 8

RegExp дважды?
Вот такая строка:
<tr><td class="type">страна</td><td class=""><a href="http://localhost">США</a>, <a href="http://localhost">Россия</a></td></tr>

вместо localhost может быть любой другой адрес, стран может быть от 0 и до фига... надо чтоб названия стран попали в одну из групп регэкспа.
Код:
(?<=страна.*)(/">)(.*?)(<)<br>
вот такой регэксп подошел бы, но в JScript/VBScript RegExp нет просмотра назад...

Вобщем - как выполнить регэксп
Код:
(/">)(.*?)(<)
только для строки, в которой есть слово "страна"?
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2009, 15:42
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от AlbusFalco
вот такой регэксп подошел бы, но в JScript/VBScript RegExp нет просмотра назад...
Фридл нам как бы говорит, что любое выражение можно построить без использования просмотра назад, и лично я с ним согласен.

В вашем же случае лучше использовать DOM-методы, ибо парсить регулярками innerHTML дело неблагодарное, innerHTML в разных браузерах разный.
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2009, 15:49
Новичок на форуме
Отправить личное сообщение для AlbusFalco Посмотреть профиль Найти все сообщения от AlbusFalco
 
Регистрация: 13.08.2009
Сообщений: 8

да я тоже уверен, что можно... просто не могу найти, КАК.
а насчет остального - требуется именно регэксп.
Ответить с цитированием
  #4 (permalink)  
Старый 13.08.2009, 15:56
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Может сначала удалить все теги:
.replace(/<\/?[^>]+>/g, '')
?
Ответить с цитированием
  #5 (permalink)  
Старый 13.08.2009, 15:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Просто то, что слева, будет попадать в результаты поиска.
Ответить с цитированием
  #6 (permalink)  
Старый 13.08.2009, 16:06
Новичок на форуме
Отправить личное сообщение для AlbusFalco Посмотреть профиль Найти все сообщения от AlbusFalco
 
Регистрация: 13.08.2009
Сообщений: 8

так ведь строка то у меня не одна. мне надо сначала найти строку содержащую слово страна, а потом уже - отсеивать названия стран...
да и зачем теги удалять? я по ним и ориентируюсь в этом регэкспе.
вот скажем два, друг за другом прокатило б, но больно некрасиво и неэкономично:

1. (<tr><td class="type">страна.*)
2. (/">)(.*?)(<)

вопрос в том, как их сляпать в одну строку, чтоб все было одним запросом?
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2009, 08:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от AlbusFalco
а насчет остального - требуется именно регэксп.
это еще не доказано
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2009, 08:44
Новичок на форуме
Отправить личное сообщение для AlbusFalco Посмотреть профиль Найти все сообщения от AlbusFalco
 
Регистрация: 13.08.2009
Сообщений: 8

Сообщение от x-yuri
это еще не доказано
я пишу standalone прогу на vb6 и ms vbscript regexp 5.5. Так как синтаксис регулярок последнего именно JScript'овый, я и спросил тут. Использовать встроенные средства не хочу, т.к. регэкспы, как шаблоны, удобнее сохранять извне, чтоб не перекомпилировать программу каждый раз под определенные сайты.
Ответить с цитированием
  #9 (permalink)  
Старый 14.08.2009, 09:15
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от AlbusFalco
регэкспы, как шаблоны, удобнее сохранять извне, чтоб не перекомпилировать программу каждый раз под определенные сайты
похоже на причину, стоило об этом сначала сказать

а почему бы не включить (?<=страна.*) в результат, т.е. не использовать просмотр назад
Ответить с цитированием
  #10 (permalink)  
Старый 14.08.2009, 09:31
Новичок на форуме
Отправить личное сообщение для AlbusFalco Посмотреть профиль Найти все сообщения от AlbusFalco
 
Регистрация: 13.08.2009
Сообщений: 8

не совсем понял... т.е. как это "включить (?<=страна.*) в результат"?
вот это - "?<=" вообще не обрабатывается в трансляторе регэкспов.
у меня что получается: одним регэкспом я могу ИЛИ выдернуть строку со словом "страна", ИЛИ выдернуть все содержимое тегов (/">)(.*?)(<) из всего документа. как я заметил - использование регэкспа вызывает всплеск загрузки процессора, поэтому использовать несколько штук подряд не очень бы хотелось, вот и ищу способ сделать все за один раз, одним запросом.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
evalScripts без regexp и eval Diem Events/DOM/Window 1 30.07.2009 17:34
Как опознать RegExp. Kolyaj Общие вопросы Javascript 25 04.07.2009 01:41
мааленький вопрос по Regexp:) mirniy Общие вопросы Javascript 1 22.01.2009 20:47
RegExp & Mozilla (быстродействие) tau Общие вопросы Javascript 9 24.11.2008 16:35
RegExp и unicode Yury900 Общие вопросы Javascript 7 13.05.2008 00:19