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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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
    Hjkma

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sikemo
    Пробовал эту регулярку

    Цитата:
    (?(?=^Photo Url), )

    в Notepad++ не работает.

    Всего записей: 242 | Зарегистр. 04-03-2015 | Отправлено: 12:49 24-02-2018
    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) а потом применил замену

    Всего записей: 1326 | Зарегистр. 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:)

    Всего записей: 1520 | Зарегистр. 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,:)
     

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

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

    Всего записей: 1326 | Зарегистр. 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 т.е. есть отличия. Попробуйте, может заработает

    Всего записей: 1326 | Зарегистр. 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.
    Тут он весь и расписан.

    Всего записей: 1520 | Зарегистр. 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
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru