Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

Открыть новую тему     Написать ответ в эту тему

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   Регулярные выражения
Обучающий материал
  • Книги    
  • Шпаргалки: от AZJIO (AutoIt3, PCRE) от Dave Child
  • wikipedia.org - Регулярные выражения на wiki  
  • edlinsoft.blogspot.com - Регулярные выражения в .NET Framework  
  • php.ru - Синтаксис регулярных выражений  
  • php.net - Синтаксис регулярных выражений  
  • regexpstudio.com - Регулярные выражения для Delphi  
    Официальные источники:
  • docs.notepad-plus-plus.org - Официальный источник Notepad++ (англ. яз.)  
  • pcre.org - Официальный справочник движка PCRE (англ. яз.)  

  •    Тестирование регулярных выражений
    Программы
    Онлайн сервисы
  • RegexBuddy - крутая и платная  
  • RegExp - бесплатно, AZJIO, PCRE, AutoIt3  
  • Expresso  
  • The Regex Coach  
  • RegExstar, Github (AutoHotKey, PCRE)
  • Обзор программ от ManHunter    
  • regexr.com здесь в Community множество готовых регулярных выражений  
  • pagecolumn.com - для javascript  
  • pagecolumn.com - для php  
  • cuneytyilmaz.com - для javascript  
  • php-include.ru - на флеш-плеере  
  • regex101.com  
  • easyregexp.ru  
  • debuggex.com - показывает структурно  

  •    Схожие темы
  • javascript регулярные выражения
  • PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
  • Игра - Регулярно выражайтесь!
     
    первое сообщение темы...
    Обсуждение шапки данной темы ведётся в этой теме
    Рекомендации по составлению вопросов в данной теме:

  • Всего записей: 33 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002 | Исправлено: AZJIO, 15:18 12-02-2021
    VVL99

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    #

    ----------
    Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

    Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 14:34 24-02-2018 | Исправлено: VVL99, 11:02 25-02-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Hjkma

    Цитата:
    Нужно чтобы если в начале строки стоят Photo Url, то символы (запятая и пробел)  
    ..
    должны удаляться во всей строке.

    Текстовый редактор AkelPad
    скрипт SearchReplace.js
    [+] Регулярные выражения  
    [+] Многострочно
    [+] Зменять на функцию
     

    Код:
    Что:^Photo Url[^\r\n]*
    Чем:return arguments[0].replace(/, /g, "")

     
    Кнопка: "Заменить всё"


    + Решение на powershell:

    Код:
    $a = 'd:\test.txt';$b = type $a -enc UTF8;$b|%{if($_ -match '^Photo URL'){$_ -replace ', '} else {$_}}|set-content $a -enc UTF8

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:15 24-02-2018 | Исправлено: YuS_2, 18:48 24-02-2018
    qw12



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Hjkma

    Код:
    (?(?=^((?!Photo Url).).*$)|[\s,])

     
    Добавлено:

    Цитата:
    если в начале строки стоят Photo Url, то символы [,\s] должны удаляться во всей строке. И если в начале строках слова Photo Url не стоят, то символы [,\s] не должны затрагиваться.

    Найти и заменить.

    Всего записей: 601 | Зарегистр. 04-06-2001 | Отправлено: 16:19 24-02-2018 | Исправлено: qw12, 16:20 24-02-2018
    VVL99

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кстати подобное можно проделать и в браузере:
    Копируем код в текстовое поле ответа и выполняем код из консоли или букмарклетом.

    Код:
     
    javascript: (function(){for(var ln=post.value.split("\n"),nl="",i=0;i<ln.length;i++)nl=ln[i].match(/^Photo Url:.*/)?nl+(ln[i].replace(/,\s/g,"")+"\n"):nl+(ln[i]+"\n");post.value=nl})()
     


    ----------
    Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

    Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 16:53 24-02-2018 | Исправлено: VVL99, 23:59 24-02-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как по мне, я бы сделал сначала удаление несотв. строк (использую Akelpad) а потом применил замену

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 22:30 24-02-2018
    Hjkma

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен только регексп (делаю макрос в Notepad++)
    qw12
    не работает как надо, натчит вообще все пробелы и запятые в любой строке.

    Всего записей: 242 | Зарегистр. 04-03-2015 | Отправлено: 02:05 25-02-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Hjkma

    Цитата:
    Нужен только регексп (делаю макрос в Notepad++)

    Похоже нужен не регэксп, а "шашечки" , тогда Вам сюда с этим вопросом.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:41 25-02-2018
    extrasensory

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, как должно выглядеть регулярное выражение для Notepad++ для авто-замены, которое добавит пробел после "точки в конце предложения" (но не например в значении '0.5 мм'), после "запятой между словами" (но не например 0,55 мм), после "знака %", после которых необходим пробел, если в тексте его (пробела) нет?

    Всего записей: 40 | Зарегистр. 07-11-2009 | Отправлено: 10:49 21-03-2018 | Исправлено: extrasensory, 11:05 21-03-2018
    ne_viens

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    \.(\u)|,(\l)|&(.)
    (?1. $1:)(?2, $2:)(?3& $3:)

    Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 13:14 21-03-2018
    extrasensory

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ne_viens Большое вам спасибо!
    И если позволите. немного схожая задача...
    Как при помощи регулярного выражения для Notepad++ можно удалить лишние пробелы перед 'точкой, в конце предложения' и перед 'запятой'?  
    Примеры:
    1. 'Конец предложения . Новое предложение.'
    2. 'Начало предложения , середина предложения, конец предложения.'

    Всего записей: 40 | Зарегистр. 07-11-2009 | Отправлено: 14:01 21-03-2018
    ne_viens

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    (\l) \.|(\l) ,
    (?1$1\.:)(?2$2,:)
     
    Если всё за один присест, то:
    \.(\u)|,(\l)|&(\S)|(\l) \.|(\l) ,
    (?1. $1:)(?2, $2:)(?3& $3:)(?4$4\.:)(?5$5,:)
     

    Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 14:24 21-03-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    может, шапку какую-то накатать, для Akelpad, Notepad++ с ссылками на онлайн справки regexp's ибо как для меня, не понятный формат последних регэкспов, а справиться о них было бы неплохо. Да и тема у нас пока, без шапки

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 16:43 21-03-2018
    extrasensory

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ne_viens, Низкий вам поклон! Огромное спасибо, всё отлично работает. Удивился, что в AkelPad они не работают, думал, данные вещи универсальны, но да, нужно было именно под Notepad++. Ещё раз, большое спасибо!

    Всего записей: 40 | Зарегистр. 07-11-2009 | Отправлено: 20:57 21-03-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    extrasensory
    если я понял $1 $2 это адреса — в Акеле соотв \1 \2 т.е. есть отличия. Попробуйте, может заработает

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 21:12 21-03-2018
    extrasensory

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ne_viens, скажите пожалуйста, а возможно в принципе навести порядок со знаками препинания при помощи регулярных выражений? Если примеры, которые вы любезно составили выше, отлично отрабатывают пробелы 'до' и 'после' запятой и точкой, очень хочется (если это возможно конечно) одной (или несколькими автозаменами) полностью навести порядок, а именно:
    1. Удалить лишний пробел после начальной скобки и текстом 'пример ( пример)'
    2. Удалить лишний пробел перед закрывающей скобкой и текстом 'пример (пример )'
    3. Добавить недостающий пробел перед начальной скобкой 'пример(пример)'
    4. Добавить недостающий пробел после закрывающей скобки 'пример (пример)пример'
     
    Собственно и с остальными знаками препинания, как-то '!' '?' ':' '%' проделать бы подобное, удалить (добавить) недостающие (лишние) пробелы. А может существует иной способ данной задачи?

    Всего записей: 40 | Зарегистр. 07-11-2009 | Отправлено: 08:38 25-03-2018 | Исправлено: extrasensory, 08:40 25-03-2018
    ne_viens

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, возможо. Надо только наращивать соответственно строки поиска и замены по образцу.
    Только, когда количество пар скобок в поиске и, соответственно, количество переменных в замене превысит 9, номер условия надо брать в фигурных кавычках, например - (?{10}$10,:)
     
    Про синтаксис.
    В NPP++ для regex используется библиотека boost, в которой по умолчанию включен синтаксис Perl.
    Тут он весь и расписан.

    Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 12:38 25-03-2018
    extrasensory

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ne_viens Спасибо! Не могли-бы еще немного направить?
    По аналогии с вашими примерами, для поиска 'лишнего пробела перед знаком пунктуации', кажется срабатывает поиск по такому шаблону: (\l) ([,\.\?\):;\!%])|(\l) ,  
    Но никак не могу взять в толк, как обозначить, что-бы вернуть именно тот, символ, что был, удалив лишний пробел? А то, что-то я явно не в ту степь отправился: (?1$1\.:)(?2$2,:)(?3$3\?:)(?4$4!:)(?5$5\::)(?6$6;:)(?8$8\%:)(?9$9,):)
    Или так вообще нельзя и нужно разбирать на блоки каждый символ? Например:  
    Удалить лишний пробел между словом и восклицательным знаком:
    (\l) \!|(\l) ,
    (?1$1\!:)(?2$2,:)
    и по аналогии все остальные знаки?
     

    Всего записей: 40 | Зарегистр. 07-11-2009 | Отправлено: 14:21 25-03-2018 | Исправлено: extrasensory, 14:22 25-03-2018
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    extrasensory, вы бы лучше тут пример текста привели (хотя бы под more), когда перед глазами текст, то легче ориентироваться.
    А так для примера и чтобы дать вам направление
    Найти
    Код:
    ((\l) (\!|,|\)|\.))
    заменить на
    Код:
    (?1$2$3:)
    Пример для теста

    Код:
    Удалить лишний пробел перед ! и запятой , и закрывающей скобкой ) и точкой . Новое предложение .

    По аналогии думаю уже сами разберетесь как перечислить остальные знаки.

    ----------
    Раздачи и акции

    Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 18:39 25-03-2018 | Исправлено: regist123, 18:47 25-03-2018
    extrasensory

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123, Спасибо! По аналогии, смог добавить остальные условия для поиска и замены "лишних пробелов перед некоторыми знаками пунктуации".  Но скрестить удаление, с добавлениями (с чем любезно выше помог ne_viens) недостающих пробелов перед некоторыми знаками препинания не смог и в итоге, собрал кучу регулярных выражений, пошагово записал всё в один макрос, кажется работает. В идеале, конечно хотелось одним махом навести порядок и привести к нужному виду текст в части пунктуации по средствам регулярных выражений, но нет, знаний маловато, а понять принцип и тем более запомнить реджепы, я никак не в силах, а по отдельности кажется всё собрал с вашей помощью и с помощью ne_viens, большое вам спасибо!
     

    Всего записей: 40 | Зарегистр. 07-11-2009 | Отправлено: 17:52 26-03-2018 | Исправлено: extrasensory, 17:54 26-03-2018
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    extrasensory 18:52 26-03-2018
    Цитата:
    В идеале, конечно хотелось одним махом навести порядок и привести к нужному виду текст в части пунктуации по средствам регулярных выражений

    Опять таки просто для примера, в какую сторону двигаться

    Код:
    Удалить лишний пробел перед ! и запятой , и закрывающей скобкой ) и точкой . Новое предложение .
    Добавить пробел после скобки)слово с маленькой буквы.


    Код:
    ((\l) (\!|,|\)|\.))|(\))(\l)
    на
    Код:
    (?1$2$3:)(?4$4 $5:)

     
    Добавлено:
    Я бы на вашем месте регулярки тут раздел бы три группы.  
    1) Где надо убрать пробел.
    2) Где надо добавить пробел после символа.
    3) Где надо добавить пробел перед символов.
     
    Варианты внутри группы перебрать через | ((по аналогии, как сделано в регулярке в моей предыдущем посте). А эти три группы потом опять объединил бы уже по аналогии как в этом посте объединена первая и вторая группа.

    ----------
    Раздачи и акции

    Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 20:41 26-03-2018
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru