Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с регуляркой

Помогите с регуляркой
Я
   Rom_Kat
 
19.10.16 - 20:47
Добрый день уважаемые спецы.

Надо разработать патерн для выявления слов в тексте в которых присутствуют на ряду с латинскими буквами и цифрами буквы кирилицы.
 
 
   Mauser
 
1 - 19.10.16 - 21:09
Группа между пробельными символами или границами слова, внутри которой есть хотя бы один символ из набора латиницы и цифр, затем любой символ в количестве 0 или больше, а затем символ из набора кириллицы или сначала символ из набора кириллицы, затем любой символ в количестве 0 или больше, а затем символ из набора латиницы и цифр.
   Rom_Kat
 
2 - 19.10.16 - 21:21
[А-Яа-я]{0,}[A-Za-z0-9].{0,}[А-Яа-я]{1,}[A-Za-z0-9]{0,}

так?
   Mauser
 
3 - 19.10.16 - 23:15
(2) нет
похоже ты хочешь не паттерн а готовую реализацию
   orefkov
 
4 - 20.10.16 - 01:13
[А-Яа-я]\w[А-Яа-я]+\w*
   orefkov
 
5 - 20.10.16 - 01:15
Опять движок форума звёздочку съел.
bazvan?
   orefkov
 
6 - 20.10.16 - 01:17
Ну, или если используются правильные движки для регулярок, то вместо [А-Яа-я] лучше \p{Cyrillic}
   Garykom
 
7 - 20.10.16 - 01:33
можно два шаблона

((латиница и цифры)+(кирилица)+(латиница и цифры)*)|((латиница и цифры)*(кирилица)+(латиница и цифры)+)
   Rom_Kat
 
8 - 20.10.16 - 01:56
(3) а вообще-то работает. А почему нет по вашему?
   Rom_Kat
 
9 - 20.10.16 - 02:01
(4) у меня тоже сработал. Но ваш лаконичен. Спасибо.
(6) Это VBScript.RegExp нормальный?
   Rom_Kat
 
10 - 20.10.16 - 02:08
(4)это не работает. в \w и кириллица входит?
 
 Рекламное место пустует
   Кирпич
 
11 - 20.10.16 - 10:12
вот так вроде нормально отлавливает "\w*[А-Яа-яЁё]+\w*"
   Кирпич
 
12 - 20.10.16 - 10:12
на  VBScript.RegExp
   Timon1405
 
13 - 20.10.16 - 11:07
(11) так-то в ТЗ есть фраза "НАРЯДУ с латинскими буквами и цифрами", то есть лат. буква или цифра должны быть обязательно. у вас будет ложное срабатывание на строке "ппп"
   Кирпич
 
14 - 20.10.16 - 11:12
(13) аааа. ну тогда наверное так
"\w+[А-Яа-яЁё]+\w*\W|w*[А-Яа-яЁё]+\w+\W"
   Кирпич
 
15 - 20.10.16 - 11:13
цифры добавить только ещё
   Кирпич
 
16 - 20.10.16 - 11:36
и чтобы последнее слово цепляло
"\w+[А-Яа-яЁё]+\w*[\W$]|\w*[А-Яа-яЁё]+\w+[\W$]"
   Timon1405
 
17 - 20.10.16 - 11:48
(16) строка из одного слова "ggп11" не проходит тест
   Кирпич
 
18 - 20.10.16 - 12:00
(17) регулярки это бесконечно :))
"[\w]+[А-Яа-яЁё]+[\w]*[\W$]*|[\w]*[А-Яа-яЁё]+[\w]+[\W$]*"
   Timon1405
 
19 - 20.10.16 - 12:05
(18) Это точно) сейчас лажа на " gпп пп", он думает что это одно слово
   Кирпич
 
20 - 20.10.16 - 12:30
"\w+[А-Яа-яЁё]+\w*\W|\w*[А-Яа-яЁё]+\w+\W|\w+[А-Яа-яЁё]+\w*$|\w*[А-Яа-яЁё]+\w+$"
надеюсь прокатит
   Кирпич
 
21 - 20.10.16 - 12:32
хотя не катит :)

п1п
   Кирпич
 
22 - 20.10.16 - 12:35
хотя если ИЛИ цифры ИЛИ латинские буквы, то пойдет
   Timon1405
 
23 - 20.10.16 - 12:40
(20) согласен) осталось поправить строку "п_", но это уж совсем придирки про разворачиванию \w в [0-9A-Z_] VBScript
   Кирпич
 
24 - 20.10.16 - 12:52
не прокатило "яяzzяяzz"
   Кирпич
 
25 - 20.10.16 - 12:53
делит на два слова
   Кирпич
 
26 - 20.10.16 - 14:13
вот так наверное
"(?:\w+[А-Яа-яЁё]+\w*|\w*[А-Яа-яЁё]+\w+)+(?=\s|$)"
   Timon1405
 
27 - 20.10.16 - 14:19
(26) "п1п" не видит первую п
   Кирпич
 
28 - 20.10.16 - 14:21
(27) о боже мой
   Кирпич
 
29 - 20.10.16 - 14:31
добавим спереди ещё одну загогулину
"(?:\W|)(?:\w+[А-Яа-яЁё]+\w*|\w*[А-Яа-яЁё]+\w+)+(?=\s|$)"
всё. надоело.
   DTX 4th
 
30 - 20.10.16 - 15:19
надо, чтобы была и цифра и латинская буква? Т.е.
"1я" попадает под патерн?
   Кирпич
 
31 - 20.10.16 - 15:27
(30)я сам не знаю надо или не надо. в (29) тоже неправильно как то получилось. может так канает:
"[А-Яа-яЁё\w]+(?:[А-Яа-яЁё]+\w+|\w+[А-Яа-яЁё]+)+(?=\s|$)"
   DTX 4th
 
32 - 20.10.16 - 15:31
(30) Если попадает, то вот:

^ .* [a-z\d] .* [а-я] .* $  |  ^ .* [а-я] .* [a-z\d] .* $
Флаги: xgm

https://regex101.com/r/2fZPMq/2
   DTX 4th
 
33 - 20.10.16 - 15:32
Ну ток надо начало и конец строки заменить на границу слова. \b - не подходит, так как zzzяяя - два слова.
 
 
   Кирпич
 
34 - 20.10.16 - 15:33
вот ещё
[А-Яа-яЁё\w]+(?:[А-Яа-яЁё]+\w*|\w*[А-Яа-яЁё]+)+(?=\s|$)
   Кирпич
 
35 - 20.10.16 - 15:36
(32) чота в выражении куча пробелов. не скопипастить почеловечески
   DTX 4th
 
36 - 20.10.16 - 15:37
(35) Так для читабельности же. Флаг "x" (eXtended) игнорит пробелы
   DTX 4th
 
37 - 20.10.16 - 15:40
(34) я12 не попадает, яяя - попадает. На regex101.com удобно тестить. В моей ссылке уже все примеры забиты
   Timon1405
 
38 - 20.10.16 - 15:43
(30) обычно такое пишется для поиска и исправления косяков ввода, так что скорее всего по логике там буква ИЛИ цифра
   Кирпич
 
39 - 20.10.16 - 15:46
ну всё. ну вот сейчас точно все
"(?:[А-Яа-яЁё]+\w+[А-Яа-яЁё]*|\w+[А-Яа-яЁё]+\w*)+(?=\s|$)"
   DTX 4th
 
40 - 20.10.16 - 15:52
(39) Похоже на правду, осталось объяснить, как работает)
   Кирпич
 
41 - 20.10.16 - 15:53
(40) не знаю как оно работает, с виду как будто кошка по клавиатуре пробежала
   DTX 4th
 
42 - 20.10.16 - 15:54
у меня просто ищет слова двух вариантов:
первый - когда в слове встречается сначала буква кириллицы, а потом латиницы.
второй - наоборот.

Твоё осилить не могу)
   Мойдодыр
 
43 - 20.10.16 - 15:57
   Кирпич
 
44 - 20.10.16 - 15:57
(42) твоя, кстати, в строчку не работает. только если каждое слово в отдельной строке
   DTX 4th
 
45 - 20.10.16 - 15:59
(44) Да, я в (33) оговорочку уже сделал.
   Кирпич
 
46 - 20.10.16 - 16:00
(43) прикольная фигня
   Кирпич
 
47 - 20.10.16 - 16:01
+(46) даже очень прикольная
   DTX 4th
 
48 - 20.10.16 - 16:06
(43) Терь, асилил, спасибо)
Неплохо-неплохо.. Зато моя с первого раза взлетела :D
   Кирпич
 
49 - 20.10.16 - 16:06
 
 Рекламное место пустует
   DTX 4th
 
50 - 20.10.16 - 17:03
Во время обеда подумал, что мой вариант можно упростить)
Смысл - найти в центре слова русскую букву и \w:

https://regex101.com/r/2fZPMq/3

Все недопилы (32) отпали сами собой
   DTX 4th
 
51 - 20.10.16 - 17:04
(50) Забыл саму регулярку:
[\wа-я]*(?:(?:[а-я]\w)|(?:\w[а-я]))[\wа-я]*
   Кирпич
 
52 - 20.10.16 - 17:16


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует