Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2010, 18:15
Кандидат Javascript-наук
Отправить личное сообщение для jetli13 Посмотреть профиль Найти все сообщения от jetli13
 
Регистрация: 25.11.2009
Сообщений: 109

Регулярное выражение
Помогите пожалуйста с регуляркой
есть текст:

<a title="словоВТайтле тырым-пырым." >словечко , просто слово</a> <span class="no-need">это слово не нужно</span>


в нем мне нужно найти "слов" только в
1) "слов"ечко
2) просто "слов"о

и все, остальные вхождения проигнорировать.

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2010, 19:32
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

слов(?=ечко|о)

слов(?=(?:ечк)?о)
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2010, 19:41
Кандидат Javascript-наук
Отправить личное сообщение для jetli13 Посмотреть профиль Найти все сообщения от jetli13
 
Регистрация: 25.11.2009
Сообщений: 109

Сообщение от Riim
слов(?=ечко|о)

слов(?=(?:ечк)?о)
Спасибо, за ответ.
Понял что не правильно задал вопрос.

Нужно найти слова, которые не внутри title и вне span с классом no-need
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2010, 09:33
Кандидат Javascript-наук
Отправить личное сообщение для jetli13 Посмотреть профиль Найти все сообщения от jetli13
 
Регистрация: 25.11.2009
Сообщений: 109

Так и не решил проблему.
пробовал в онлайн редакторе подобрать.
Нахожу либо все вхождения, либо не одного (
Help please!!

Последний раз редактировалось jetli13, 11.01.2010 в 10:26.
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2010, 13:41
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

str='<a title="словоВТайтле тырым-пырым." >словечко , просто слово</a> <span class="no-need">это слово не нужно</span>';
re = /<(\w+?)(?:\s+(?!class=(['"])no-need\2)|(?:\w+=(['"]).*?[^\\]\3))*\s*>(.*?слов(?=ечко|о).*?)<\/\1>/ig;
alert(re.exec(str)[4]);
alert(re.exec(str)[4]);

Последний раз редактировалось PeaceCoder, 11.01.2010 в 13:58.
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2010, 13:59
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

отладил. как видно второй результат null для span

получая [4] потом можно уже разбаить другой регуляркой
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2010, 16:53
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Строго говоря, для разбора HTML регулярки подходят слабо. Если этот код прицплен к DOM, лучше бы использовать именно ДОМовские методы.
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2010, 17:22
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Chrome: "Ошибка: Cannot read property '4' of null"
Ответить с цитированием
  #9 (permalink)  
Старый 11.01.2010, 17:26
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Riim
Chrome: "Ошибка: Cannot read property '4' of null"
Я привел пример что работает. регулярка может выдавать null в этом случае подходящей строки вообще не найдено иначе найдет всю строку с условием поиска.
Ответить с цитированием
  #10 (permalink)  
Старый 11.01.2010, 21:40
Интересующийся
Отправить личное сообщение для Michael83 Посмотреть профиль Найти все сообщения от Michael83
 
Регистрация: 05.01.2010
Сообщений: 28

можно так
var str = '<a title="словоВТайтле \nтырым-пырым." >словечко , просто слово</a> <span class="no-need">это слово не нужно</span>';
str = str.replace(/(<\w+[^>]+?\b)(title="[^"]+")([^>]*?>)/, '$1$3');
str = str.replace(/<span[^>]+?class="(.*?)\bno-need\b(.*?)"[^>]*?>.*?(?=<\/span>)<\/span>/, '');
alert(str)
var re = /словечко|слово/gi;
var result = [];
while (m = re.exec(str))
    result.push(m[0]);
alert(result);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение для проверки URL Beck Events/DOM/Window 13 06.02.2011 08:01
Регулярное выражение для поиска смайлов. NightmareZ Общие вопросы Javascript 13 23.06.2009 13:12
помогите составить регклярное выражение olgatcpip Общие вопросы Javascript 7 05.05.2009 14:20
регулярное выражение demi Общие вопросы Javascript 3 10.03.2009 13:10
Регулярное выражение в замыкании, проблема в IE Octane Общие вопросы Javascript 8 08.12.2008 20:43