Регулярные выражения на все случаи жизни

Werti

Client
Регистрация
08.05.2019
Сообщения
441
Благодарностей
177
Баллы
43
Напомните, плиз, как регуляркой удалить строки такого вида:
- 11111-222-3333 - 55555-666-7777
Т.е. строка начинается с тире, потом идет пробел, потом идут массивы цифр, разделенные тире и пробелами.
Проблему можно перефразировать так: нужно удалить строки, в которых есть только цифры, пробелы и тире.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Напомните, плиз, как регуляркой удалить строки такого вида:
- 11111-222-3333 - 55555-666-7777
Т.е. строка начинается с тире, потом идет пробел, потом идут массивы цифр, разделенные тире и пробелами.
Проблему можно перефразировать так: нужно удалить строки, в которых есть только цифры, пробелы и тире.
Через кубик Обработка текста (Regex) - Заменить (на пустоту).
Регулярка:
[0-9-\ ]+
или
Регулярка:
[\d-\ ]+
PS: Но нужно проверять на конкретном исходнике, может отрабатывать неправильно (не ожидаемо как бы).
 
Последнее редактирование:

Werti

Client
Регистрация
08.05.2019
Сообщения
441
Благодарностей
177
Баллы
43
Через кубик Обработка текста (Regex) - Заменить (на пустоту).
Регулярка:
[0-9-\ ]+
или
Регулярка:
[\d-\ ]+
PS: Но нужно проверять на конкретном исходнике, может отрабатывать неправильно (не ожидаемо как бы).
В таком виде не работает. :( Но это наверно я виноват, ибо я не совсем точно описал проблему. Дело в том, что указанная цифровая строка присутствует в тексте, который, разумеется, трогать не нужно. А данные регулярки удаляют все цифры и все пробелы во всем тексте.

Редактируемый текст имеет примерно такой вид:

Мама мыла раму
Папа пилит маму
Деда жрет водяру (2-3 литра)

- 11111-222-3333 - 55555-666-7777
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 383
Баллы
113
а все цифровые строки начинаются с тире? Если да, то просто по тире удаляй
или накидай функцию проверки символов по кодировке, например.
если все символы в строке - это искомые знаки, то удаляешь строку
 
  • Спасибо
Реакции: Werti

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
В таком виде не работает. :( Но это наверно я виноват, ибо я не совсем точно описал проблему. Дело в том, что указанная цифровая строка присутствует в тексте, который, разумеется, трогать не нужно. А данные регулярки удаляют все цифры и все пробелы во всем тексте.

Редактируемый текст имеет примерно такой вид:

Мама мыла раму
Папа пилит маму
Деда жрет водяру (2-3 литра)

- 11111-222-3333 - 55555-666-7777
Тогда попробуйте так, если структура этой строки с постоянным кол-вом числовых групп и дефисов/пробелов между ними.
Регулярка:
-\ \d+-\d+-\d+\ -\ \d+-\d+-\d+
 
  • Спасибо
Реакции: Werti

Werti

Client
Регистрация
08.05.2019
Сообщения
441
Благодарностей
177
Баллы
43
Тогда попробуйте так, если структура этой строки с постоянным кол-вом числовых групп и дефисов/пробелов между ними.
Регулярка:
-\ \d+-\d+-\d+\ -\ \d+-\d+-\d+
Спасибо, работает! :bp:
 
  • Спасибо
Реакции: Sergodjan

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 177
Благодарностей
816
Баллы
113
Подскажите, как отсечь строки содержащие 2 и более точки. Пример:
"one.two three" - оставить
"one.two.three" - удалить
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
  • Спасибо
Реакции: Zedx

deskuznetsov

Client
Регистрация
29.08.2019
Сообщения
523
Благодарностей
361
Баллы
63
Подскажите плиз, как вытащить регуляркой SnGs2s74LjeRD0n64OLbq0Zla2s8ZHh2vBz7f_ZAuhI

Такая вообще не подходит (?<=value=")[\w\W]*(?="/>)
Будет и другие токены тогда находить, да и еще кучу всего лишнего
Конкретно этот токен только 1 раз встречается и не пойму за что его вытянуть

C#:
     <input type="hidden" name="fos_user_registration_form[_token]"
                       value="SnGs2s74LjeRD0n64OLbq0Zla2s8ZHh2vBz7f_ZAuhI"/>
                <div class="form-group">
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
371
Баллы
63
Подскажите плиз, как вытащить регуляркой SnGs2s74LjeRD0n64OLbq0Zla2s8ZHh2vBz7f_ZAuhI

Такая вообще не подходит (?<=value=")[\w\W]*(?="/>)
Будет и другие токены тогда находить, да и еще кучу всего лишнего
Конкретно этот токен только 1 раз встречается и не пойму за что его вытянуть

C#:
     <input type="hidden" name="fos_user_registration_form[_token]"
                       value="SnGs2s74LjeRD0n64OLbq0Zla2s8ZHh2vBz7f_ZAuhI"/>
                <div class="form-group">
Если строка стабильна по количеству символов, можно попробовать задать квантификаторами длину
C#:
(?<=value=").{40,45}(?="/>)
 
  • Спасибо
Реакции: deskuznetsov

deskuznetsov

Client
Регистрация
29.08.2019
Сообщения
523
Благодарностей
361
Баллы
63

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Подскажите плиз, как вытащить регуляркой SnGs2s74LjeRD0n64OLbq0Zla2s8ZHh2vBz7f_ZAuhI

Такая вообще не подходит (?<=value=")[\w\W]*(?="/>)
Будет и другие токены тогда находить, да и еще кучу всего лишнего
Конкретно этот токен только 1 раз встречается и не пойму за что его вытянуть

C#:
     <input type="hidden" name="fos_user_registration_form[_token]"
                       value="SnGs2s74LjeRD0n64OLbq0Zla2s8ZHh2vBz7f_ZAuhI"/>
                <div class="form-group">
Можно еще такой регуляркой:
Регулярка:
(?<=name="fos_user_registration_form\[_token]"\s+value=\")[\w\W]*?(?=")

или

(?<=name="fos_user_registration_form\[_token]"\s+value=\").*?(?=")
61012
 
  • Спасибо
Реакции: deskuznetsov

deskuznetsov

Client
Регистрация
29.08.2019
Сообщения
523
Благодарностей
361
Баллы
63
Можно еще такой регуляркой:
Регулярка:
(?<=name="fos_user_registration_form\[_token]"\s+value=\")[\w\W]*?(?=")

или

(?<=name="fos_user_registration_form\[_token]"\s+value=\").*?(?=")
Посмотреть вложение 61012
Спасибо, очень кстати. Сейчас как раз заметил что выше регулярка стала брать другой токен вместо нужного, хотя проверял нормально работало((
 
  • Спасибо
Реакции: Sergodjan

Belias

Client
Регистрация
25.06.2013
Сообщения
14
Благодарностей
6
Баллы
3
Подскажите как из куска текста - вытащить первые предложения, которые должны кончаться точкой, восклицательным знаком или вопросом. И чтобы размер куска был от 140 до 155 символов.

Это нужно для генерации meta description.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Подскажите как из куска текста - вытащить первые предложения, которые должны кончаться точкой, восклицательным знаком или вопросом. И чтобы размер куска был от 140 до 155 символов.

Это нужно для генерации meta description.
Попробуйте такую регулярку:
Регулярка:
[\w\W]{1,150}(?=\ )
Возьмет нужное кол-во символов из начала текста, без обрезания слов.
 

Kulya

Client
Регистрация
11.09.2016
Сообщения
177
Благодарностей
48
Баллы
28
Всем привет, подскажите регулярку для удаления первой строки
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Всем привет, подскажите регулярку для удаления первой строки
Если нужно удалить из массива текста в переменной, то подойдет простейшая регулярка: ".+\r?\n" (без кавычек).
Кубик "Обработка текста - Замена (Regex)" по первому номеру совпадения (0-ое совп.) заменить на пустоту.

61397


Если же нужно из списка удалить первую строку, то "Операции над списком - Удалить строки" (первую строку).

61398
 
  • Спасибо
Реакции: Kulya

bzcrash

Client
Регистрация
17.12.2010
Сообщения
2
Благодарностей
0
Баллы
1
Подскажите как вытащить из текста предложения в которых от 5 слов и более?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Подскажите как вытащить из текста предложения в которых от 5 слов и более?
Пока видится такой вариант - примерно прикинуть среднее кол-во символов в 5 словах и применить регулярку:
(вместо числа 8 в регулярке проставить это среднестатистическое кол-во символов в 5-ти словах)

61573


Регулярка:
[^.]{8,}\.
 
  • Спасибо
Реакции: bzcrash

bzcrash

Client
Регистрация
17.12.2010
Сообщения
2
Благодарностей
0
Баллы
1
Пока видится такой вариант - примерно прикинуть среднее кол-во символов в 5 словах и применить регулярку:
(вместо числа 8 в регулярке проставить это среднестатистическое кол-во символов в 5-ти словах)

Посмотреть вложение 61573

Регулярка:
[^.]{8,}\.
Если в тексте есть предложения как на русском так и на английском. Нужны предложения на английском.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
  • Спасибо
Реакции: bzcrash

ErikMoor

Client
Регистрация
24.03.2016
Сообщения
121
Благодарностей
22
Баллы
18
Приветствую
помогите в составлении регулярки
Есть список логинов к примеру вида:
Vasya23
Vasya Pupkin
Vasya
Vasya36
Vasya Petrov
Vassya
Нужно отобрать те логины в которых нету цифр и пробелов
в данном случае будут логины только:
Все остальные не подходят
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Приветствую
помогите в составлении регулярки
Есть список логинов к примеру вида:


Нужно отобрать те логины в которых нету цифр и пробелов
в данном случае будут логины только:

Все остальные не подходят
Берете сроку из списка и кубиком "Обработка текста - Regex" с включенной галкой "Ошибка при пустом ответе" проверяете вхождение цифр, по зеленому выходу пройдет если в логине есть цифры, по красному - если нет.

Регулярка:
\d+
 
  • Спасибо
Реакции: ErikMoor

ErikMoor

Client
Регистрация
24.03.2016
Сообщения
121
Благодарностей
22
Баллы
18
Берете сроку из списка и кубиком "Обработка текста - Regex" с включенной галкой "Ошибка при пустом ответе" проверяете вхождение цифр, по зеленому выходу пройдет если в логине есть цифры, по красному - если нет.

Регулярка:
\d+
Возможно ли как то по другому ?
У меня версия все еще 30, а тут добавлено это в 40 версии

ZennoPoster 5.40.0.0 (29.01.2020)
[+] Добавлена опция «Ошибка при пустом ответе» в действии Обработка текста → Regex.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113
Возможно ли как то по другому ?
У меня версия все еще 30, а тут добавлено это в 40 версии
После кубика "Обработка текста - Regex" добавьте кубик IF с проверкой переменной на пустоту.
'{-Variable.varname-}'!=''
 
  • Спасибо
Реакции: ErikMoor

ErikMoor

Client
Регистрация
24.03.2016
Сообщения
121
Благодарностей
22
Баллы
18
После кубика "Обработка текста - Regex" добавьте кубик IF с проверкой переменной на пустоту.
'{-Variable.varname-}'!=''

Работает
Но работает только с цифрами, а надо еще отсеять те что с пробелом
 

ErikMoor

Client
Регистрация
24.03.2016
Сообщения
121
Благодарностей
22
Баллы
18

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 442
Благодарностей
8 672
Баллы
113

strcn

Client
Регистрация
08.07.2017
Сообщения
72
Благодарностей
45
Баллы
18
Есть названия и количество товаров:

Auto Repair - Fkj 5 units
271 Repairs - Stj 20 units
Ubf Repair UCK 1 unit
Ubf Repair UCF 8 units

Какой регуляркой можно взять количество товара (цифровое значение перед units\units)?
 

dizney

Client
Регистрация
25.01.2014
Сообщения
51
Благодарностей
52
Баллы
18
Есть названия и количество товаров:

Auto Repair - Fkj 5 units
271 Repairs - Stj 20 units
Ubf Repair UCK 1 unit
Ubf Repair UCF 8 units

Какой регуляркой можно взять количество товара (цифровое значение перед units\units)?
Код:
\d+(?=\ unit)
Эту пробуйте.

62434
 
  • Спасибо
Реакции: strcn и Sergodjan

Кто просматривает тему: (Всего: 2, Пользователи: 1, Гости: 1)