ПРОБЛМА С RegEXP
КАК найти что-то ПЕРЕД чем стоит определенный символ, но НЕ захватить этот символ?
|
Ну, кроме как взять все, кроме этого символа, в скобочки
на самом деле я соврал что изучал регулярки) вчера ночью начал учить по ссылкам что дали. пишу вот для теста регулярку ищущую ссылки на youtube на форуме и заменяющую эти ссылки роликами. var reg = /(?:\s|^)(?:http:\/\/www\.|https:\/\/www\.|www\.)?youtube.com\/watch\?\S*v=(\S*?)(?:\s|&\S*|$)/ она захватывает первый пробел если он там есть, и захватывает последний пробел если после айдишника видео v=apdwyVW0HnE не идет знака & как избавится от этого? |
Цитата:
|
Цитата:
alert('foo|bar'.match(/\|(\w+)/)[1]); |
Цитата:
----- я это сделать тоже могу, хочу посмотреть способ без извращений. например / (?:\s | -) (?: коты)/ например как мне заменить ТОЛЬКО слово коты не затронув пробел перед ним? потому что может быть либо пробел либо тире! которые не должны трогаться. неужели придется сохранять еще одну группу? / (\s | -) (?: коты)/ заменяем "$1страусы" типа того? А это не сильно нагружает комп? |
Цитата:
alert('foo|bar'.replace(/\w+(?=$)/g, 'foo')); ну и так далее, главное чтобы было от чего оттолкнуться |
так, я что-то не уловил при чем входные данные)) ты оттолкнулся от того что СТРОКА КОНЧАЕТСЯ)?
ну давай сделаем боевые условия " |bar &bar " var str = ' |bar &bar ' alert( str.replace( /(\|)(bar)\s/g, '$1foo') ); |
Иными словами НЕ ЗАТРОНУТЬ ЭТОТ ПЕРЕДНИЙ СИМВОЛ никак, мы можем его только ПЕРЕЗАПИСАТЬ ТАКИМ-ЖЕ)))
|
alert('папра 5 foo|bar 54 тиапт апк4'.replace(/\w+(?=\s\d)/, 'foo')); |
Цитата:
|
Цитата:
Позволил себе немного изменить Ваш пример var x = "foo|bar"; var z = /(?=\w+$)/; var w = x.replace(z, "="); // находит позицию после "|" и вставляет туда символ alert(w); |
чтобы найти что-то перед чем стоит определенный символ, надо искать не этот символ, а то, что следует за ним.
_______ а я не улавливаю логики.......... попробуй сделай это с поиском ссылок вида www.youtube.com чтобы ссылка отделялась от остального текста пробелами при том заменялась ссылкой www.google.com при том пробелы слева и справа ссылки оставались бы нетронутыми вот в этой строке "www.youtube.com блаwww.youtube.com бла www.youtube.com" |
п.с. парсер сайта ссылки уже зпарсил смотрю) лол не обращай на это внмания
|
Цитата:
var text = 'папра 5 foo|bar 54 тиапт апк4'; alert(text.replace(RegExp(text.match(/\|(\w+\b)/)[1]), 'foo')); |
аа!!!!! все прозрел)))!!!!!
[1] обращение к свойству регулярки возвращает уже не саму регулярку а скобочную группу)))) спасибо))! я забл что мы точку используем и к свойству обращаемся))) |
Livaanderiamarum, как понял
// Задача заменить youtube.com в середине строки так, чтобы пробелы слева и справа оставались не тронутыми var x = "youtube.com бла youtube.com бла youtube.com"; var z = /(?!^)youtube.com(?= )/g; var w = x.replace(z, "google.com"); alert(w); var x = "папра 5 foo|bar 54 тиапт апк4"; var z = /(?! )[a-z]+(?= )/g var w = x.replace(z, "foo"); alert(w); |
Цитата:
|
Цитата:
// Задача заменить все youtube.com так, чтобы пробелы слева и/или справа оставались не тронутыми var x = "youtube.com бла youtube.com бла youtube.com"; var z = /youtube.com/g; var w = x.replace(z, "google.com"); alert(w); |
блин тогда так)
1) заменить все ССЫЛКИ на ютьюб, словом "НННЯЯЯ" 2) при том чтобы пробелы слева и справа от них остались нетронутыми 3) при том что длинны ссылок могут быть разные 4) при том что слова и знаки не могут касаться наших ссылок ни справа ни слева. только пробелы могут их касаться, иначе ссылка не считается ссылкой. вот строка "youtube.com/wacht?fdfg^%fgdghd745u76GHkGKGHK&8^56756*?fgd=fgdg бла youtube.com/fgdgdf?:fdgfd+пав=*?а бла youtube.com.апвпав*?=fg"; |
Часовой пояс GMT +3, время: 15:48. |