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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 90 91 92 93 94 95 96 97

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

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
    Jonmey

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

    Цитата:
    Окончательный вариант сделал пока таким:
    Найти: (?s)>[ \t\xa0]+<(?=.*<body>)
    Заменить на: ><
    Опции: Regular Expressions [On]

    Pattern [ \t\xa0]  can be changed to \s
    And sign '>' isn't need because the tag 'body' is having one time in html page and the tag often has some descriptors like the page you read right now:

    Цитата:
    <body bgcolor="#ffffff" alink="#333333" vlink="#333333" link="#333333" topmargin="2" leftmargin="0">

    As fact a presence '>' in 'body' tag doesn't give you any benefits but some pages could be untreated in batch mode.
    This is better and more universal:
    (?s)>\s+<(?=.*<body)

    Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 12:49 01-02-2023 | Исправлено: Jonmey, 13:04 01-02-2023
    ewild

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    >And sign '>' isn't need because the tag 'body' is having one time in html page
    In my case (XML with a specific design), there can be more than one 'body' and that terminal  > is needed
     
    >can be changed to \s
    \s is unwanted here because it catches \n as well which is not a good idea to replace in my case
     
    Maybe for other users, it would be pretty good, but that would be not my case.
     
    Cheers  
     
     

    Всего записей: 1203 | Зарегистр. 13-08-2005 | Отправлено: 15:08 01-02-2023
    regist123



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

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

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 07:43 09-02-2023 | Исправлено: regist123, 07:45 09-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Подскажите пожалуйста, как можно с помощью регвыражений удалить все строки, в конце которых нет определенного символа (например, такого — &).
     
    Дан текст
    простой&
    и в нем удалить
    слова без знака &
    на конце.

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 16:30 09-02-2023 | Исправлено: asku, 16:31 09-02-2023
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asku, если есть программа grep то:
    grep '\&$' file
    выведет все строки оканчивающиеся на '&', правда назвать это регулярным выражением...

    Всего записей: 7693 | Зарегистр. 08-09-2001 | Отправлено: 19:28 09-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Выведет в отдельный файл?
    А без вывода? В рамках одного файла в Notepad++ Если там нужно удалить строки, не оканчивающиеся на определенный символ.

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 20:27 09-02-2023
    Mavrikii

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

    Цитата:
    в конце которых нет определенного символа (например, такого — &

    удалить вообще или оставить пустые?
    замена на пустоту /.*[^&](\r?\n|$)/ к примеру
    либо /.*[^&]$/

    Всего записей: 15528 | Зарегистр. 20-09-2014 | Отправлено: 20:28 09-02-2023
    ishalka61

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

    Цитата:
    Подскажите пожалуйста, как можно с помощью регвыражений удалить все строки, в конце которых нет определенного символа (например, такого — &).
    В рамках одного файла в Notepad++  

     
    удалить все строки не содержащие нужный символ в любом месте
    ^(?!.*&.*$).*\R?
     
    удалить все строки не содержащие нужный символ в конце
    ^(?!.*&$).*\R?
     
    заменить на пусто в обоих вариантах
     
    удачи

    Всего записей: 5 | Зарегистр. 26-02-2019 | Отправлено: 21:45 09-02-2023 | Исправлено: ishalka61, 21:53 09-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо!
     
    Возник еще вопрос.
     
    Допустим в тексте есть такие строки
     
    кашата
    кашабу
     
    Окончания та и бу у разных слов встречается постоянно.
    То есть могут встречаться и такие строки:
     
    ложката
    ложкабу
     
    Мне нужно найти с помощью регулярного выражения каждую такую пару строк.
    Да, 1 строка это 1 слово.
    Вот первая строка:
    (.+)та$
    Вот вторая строка:
    (.+)бу$
     
    А как их соединить? Знаю, что начало строки (абзаца) это:
    ^
    Но (.+)та$^(.+)бу$ не находит ничего.

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 23:17 09-02-2023
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asku
    строки идут подряд?
    ^.+та\r?\n.+бу$

    Всего записей: 15528 | Зарегистр. 20-09-2014 | Отправлено: 04:04 10-02-2023 | Исправлено: Mavrikii, 04:14 10-02-2023
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужно попарно или?
     
    если нет, ^ .+(бу|та)$

    Всего записей: 1329 | Зарегистр. 27-11-2008 | Отправлено: 21:57 10-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii подряд. То, что надо. Спасибо!
     

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 15:09 11-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день. Возник такой вопрос.
     
    Можно ли средствами регулярных выражений искать две подряд идущие строки, у которых первое слово совпадает и при этом у одной либо другой из которых стоит в конце определенный символ, допустим почтовая собачка @
     
    То есть (далее текст для примера):
     
    Причем, и официальная
    заработная плата,
    заработная плата,
    и доход от деятельности самозанятого —
    могут поступать на одну и ту же карту.
    Для выражений того чтобы самозанятому
    Для того чтобы самозанятому@

    отчитываться перед налоговой,
    никаких при этом деклараций выражений @
    никаких деклараций

    заполнять и подавать не нужно.
    Эксперт перечислила порядок
     
    Здесь выделенные строки буду найдены, потому что:
    а) первые слова совпадают,
    б) в конце одного из двух слов есть символ @.

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 13:19 14-02-2023 | Исправлено: asku, 13:20 14-02-2023
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asku
    Цитата:
    Можно ли средствами регулярных выражений искать две подряд идущие строки, у которых первое слово совпадает и при этом у одной либо другой из которых стоит в конце определенный символ, допустим почтовая собачка @
     
    То есть (далее текст для примера):
     
    Причем, и официальная
    заработная плата,
    заработная плата,
    и доход от деятельности самозанятого —
    могут поступать на одну и ту же карту.
    Для выражений того чтобы самозанятому
    Для того чтобы самозанятому@
    отчитываться перед налоговой,
    никаких при этом деклараций выражений @
    никаких деклараций
    заполнять и подавать не нужно.
    Эксперт перечислила порядок
     
    Здесь выделенные строки буду найдены, потому что:
    а) первые слова совпадают,
    б) в конце одного из двух слов есть символ @.

    For example
    ^(\w+)[^\r\n@]*@?[\r\n]+\1[^\r\n@]+@?(?<=[^@]+@[^@]*)

    Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 23:31 14-02-2023 | Исправлено: Jonmey, 00:04 15-02-2023
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asku
    https://regex101.com/r/EFsogq/1
    зависит от того, работает ли backreference в том приложении, где используете.
    ^(\w+)[^@]*(@\r?\n\1.*|\r?\n\1.*@)$

    Всего записей: 15528 | Зарегистр. 20-09-2014 | Отправлено: 02:01 15-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Mavrikii
     
    Чуть подправил, получилось так:
    ^(\S+),?\s.[^@]*(@\r?\n\1.*|\r?\n\1.*@)$
     
    Спасибо!
    Я бы никогда не догадался. Каверзная идея, конечно.
     
    Добавлено:

    Цитата:
    зависит от того, работает ли backreference в том приложении, где используете.

     
    Использовать буду в NotePad++

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 15:05 15-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
     
    Хотя, сейчас проверяю, и запрос захватывает сразу три строки. В чем может быть проблема?
     

     
    Ссылка на regex101.com
     
    Добавлено:
    Mavrikii
    в вашем регулярном выражении тоже не совсем точно

     
    Два разных слова (первые слова двух идущих подряд строк; они подчеркнуты) «нашлись».  
    И обе строчки оканчиваются на @, а нужно, чтобы либо одна, либо другая оканчивалась на @.

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 23:24 15-02-2023 | Исправлено: asku, 23:26 15-02-2023
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asku
    for notepad++
    ^(\w+ )[^\r\n@]*([\r\n]+\1[^\r\n@]+@|@[\r\n]+\1[^\r\n@]+$)
    or
    ^(\b\w+\b)[^\r\n@]*@?(?(?<=@)([\r\n]+\1[^\r\n@]+$)|([\r\n]+\1[^\r\n@]+@$))

    Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 07:13 16-02-2023 | Исправлено: Jonmey, 09:17 16-02-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Спасибо! Получилось. Причем именно в notepad++. Еще попробовал на сайте regex101, там не проходит. Видимо, в notepad++ своя специфика.
    Подскажите пожалуйста, вы использовали какой-ниб еще сервис при составлении этого запроса?

    Всего записей: 576 | Зарегистр. 04-05-2016 | Отправлено: 19:31 16-02-2023
    sikemo

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

    Цитата:
    asku

    а, может, если текст у вас размеченный, просто удалить строки, имеющие @? Правда, судя по скринам, там еще доп. вычитка нужна

    Всего записей: 1329 | Зарегистр. 27-11-2008 | Отправлено: 22:39 16-02-2023
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 90 91 92 93 94 95 96 97

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru