Регулярное выражение
Помогите пожалуйста с регуляркой
есть текст: <a title="словоВТайтле тырым-пырым." >словечко , просто слово</a> <span class="no-need">это слово не нужно</span> в нем мне нужно найти "слов" только в 1) "слов"ечко 2) просто "слов"о и все, остальные вхождения проигнорировать. Спасибо! |
слов(?=ечко|о)
слов(?=(?:ечк)?о) |
Цитата:
Понял что не правильно задал вопрос. Нужно найти слова, которые не внутри title и вне span с классом no-need |
Так и не решил проблему.
пробовал в онлайн редакторе подобрать. Нахожу либо все вхождения, либо не одного ( Help please!! |
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]); |
отладил. как видно второй результат null для span
получая [4] потом можно уже разбаить другой регуляркой |
Строго говоря, для разбора HTML регулярки подходят слабо. Если этот код прицплен к DOM, лучше бы использовать именно ДОМовские методы.
|
Chrome: "Ошибка: Cannot read property '4' of null"
|
Цитата:
|
можно так
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); |
Часовой пояс GMT +3, время: 23:54. |