| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Регулярные выражения |
| Автор: ravana 27.5.2008, 19:48 |
| Помогите, плиз, составить регулярное выражение: Удвоить вхождения каждого четного слова Очень надо, а я в региксах совсем не понимаю.. |
| Автор: SelenIT 27.5.2008, 20:28 | ||
Если словом считать сплошную последовательность непробельных символов, а разделителем слов - один или больше пробельных, то как-то так:
Ловим первое слово вместе с разделителем в один "карман" (пару скобок), следующее за ним слово во второй, при замене второй карман вставляем дважды. Затем аналогично поступаем со следующей парой слов, и так далее по всему тексту (/g - флаг глобального поиска). |
| Автор: ravana 27.5.2008, 20:36 |
| Спасибо большое! =)) Добавлено через 4 минуты и 58 секунд Ой, а можно еще вопрос? Что делают следующие региксы? 1) /.{80,}/ 2) /(\w+)\s*=\s*(.*)\s*$/ 3) /(d+\.?\d*)/g 4) /(\b[^\WA-Z0-9_]+\b)/g 5) /(\b[^\Wa-z0-9_][^\WA-Z0-9_]*\b)/ 6) /^m*(d?c{0,3}|c[dm])(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$/i |
| Автор: SelenIT 27.5.2008, 21:02 |
| 1) Не менее 80 любых символов. 2) Слово (в слово могут входить лат. буквы, цифры и подчеркивание), за ним знак равенства (возможно, окруженный пробелами) и что угодно до последнего пробела (типа параметр конфигурации и его значение) 3) Как минимум одна цифра, за которой, возможно, следуют точка и еще цифры (т.е. типа целое либо дробное число) 4) Слово, состоящее только из маленьких лат. букв. \b обозначает границу слова, ^ в начале квадратных скобок означает "что угодно кроме перечисленного", а перечислены любые символы кроме лат. букв, цифр и подчеркивания (\W), большие буквы (A-Z), цифры и подчеркивание - остались только маленькие буквы 5) Слово, имеющее 1 большую букву в начале и от нуля до бесконечности (*) маленьких лат. букв (см. п. 4). Тоже можно написать короче - /(\b[A-Z][a-z]*\b)/ 6) Строка, начинающаяся (^ вне квадр. скобок) любым кол-вом (от нуля) букв m, затем идут либо (скобки с | означают альтернативу) 0 или одна буква d, за которой следуют от 0 до трех букв c (т.е. d, dc, dсс, ссс и т.п.), либо буква c, а за ней - одна из букв d или m (т.е. cd или cm). Дальше - по аналогии - могут идти l, x, lxxx и т.п. - либо xl или xc. А потом, соответственно, viii, vi, ii... - либо iv, ix. На этом строка должна закончиться ($). Регистр букв не учитывается (флаг i в самом конце). |
| Автор: ravana 28.5.2008, 07:40 |
| SelenIT Огромное спасибо за помощь! =) |
| Автор: bars80080 28.5.2008, 09:06 |
| чёрт возьми, где бы так научиться делать регулярки да знаю, иди читать аглицкий материал... |
| Автор: PblCb 29.5.2008, 17:07 |
| Помогите пожалуйста сделать регулярные выражения для 3 заданий: 1) Идентификатор в языке Паскаль (Проверка на наличие, на полное совпадение, выделение всех) 2) Удаление лишних пробелов (Оставить только по одному между словами) 3) Удаление пути из полного имени файла. Выделение пути из полного имени файла очень надо, помогите пожжжжжж!!!!!!!!!!! |
| Автор: bars80080 29.5.2008, 17:21 |
| PblCb, а на форум по паскалю не пробовал обращаться? |
| Автор: SelenIT 29.5.2008, 17:43 |
| bars80080, моя телепательная машинка подсказывает, что человеку нужно что-то типа редактора Паскаля (с подсветкой) на яваскрипте. |
| Автор: bars80080 29.5.2008, 17:49 |
| вах! у меня есть редактор с подсветкой синтаксиса javascript и pascal, но сомневаюсь что они работают вместе |
| Автор: PblCb 29.5.2008, 18:08 |
| нет нет, именно регулярными надо. т.е. если слово var procedure function begin или end то вернуть его (их) |
| Автор: PblCb 29.5.2008, 20:35 |
| ну хотя бы другие два задания помогите!!!! |
| Автор: Nexis 31.5.2008, 11:19 | ||
| Здравствуйте уважаемые. Подскажите, как пропарсить в отдельные переменные, аттрибуты (title, file)? из текста вида:
С регэкспами никак не могу подружиться, к моему сожалению. |
| Автор: SelenIT 31.5.2008, 12:23 |
| Nexis, это парсинг AJAX-ответа? А зачем делать это регулярками? Почему бы не использовать нативные XML-методы (getAttribute и т.п.)? |
| Автор: Nexis 31.5.2008, 13:23 |
| SelenIT, это не AJAX-ответ. Если описывать более детально, то, есть некое flash-приложение, которое подгружает в себя playlist. Выдача playlist`ов производится php-скриптом на сервере. Ответ выглядит в указанном выше формате "<song artist=........." И как использовать getAttribute, если на входе имеем фактически набор текста, не сильно связанный с DOM? А мне хотелось бы аккуратно выдирать из этого ответа переменные. Кроме как через regexp`ы мне кажется это сделать не очень реально. Или есть другие варианты? /upd Вопрос отпал. Догадка по поводу XML-ответа была верной. Я полученный ответ "доработал" до привычного xml-вида, и прекрасно пропарсил через DOMParser(). |
| Автор: SPHiX82 6.6.2008, 07:32 |
| Срочно нужна помощь!!! Нужно проанализировать строку AABAA, а и b - цифры от 0 до 9 1-ый символ задаём как группу (\d), тобишь любая цифра от 0 до 9, 2-ой символ = 1-му и задаём как обращение к 1-ой группе: \1 3-й символ тоже группа, но другая (\d) и вот как-то нужно задать условие на 3 символ, что он не = символу из 1-ой группы, те исключить случай a=b... конструкция (\d)[^\1] не катит... может тут концептуально другой подход нужен? |
| Автор: SPHiX82 6.6.2008, 08:05 |
| а, всё, вопрос уже отпал |