Имя: Пароль:
1C
1С v8
Помогите с регуляркой
,
0 Rom_Kat
 
19.10.16
20:47
Добрый день уважаемые спецы.

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

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

((латиница и цифры)+(кирилица)+(латиница и цифры)*)|((латиница и цифры)*(кирилица)+(латиница и цифры)+)
8 Rom_Kat
 
20.10.16
01:56
(3) а вообще-то работает. А почему нет по вашему?
9 Rom_Kat
 
20.10.16
02:01
(4) у меня тоже сработал. Но ваш лаконичен. Спасибо.
(6) Это VBScript.RegExp нормальный?
10 Rom_Kat
 
20.10.16
02:08
(4)это не работает. в \w и кириллица входит?
11 Кирпич
 
20.10.16
10:12
вот так вроде нормально отлавливает "\w*[А-Яа-яЁё]+\w*"
12 Кирпич
 
20.10.16
10:12
на  VBScript.RegExp
13 Timon1405
 
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$]"
17 Timon1405
 
20.10.16
11:48
(16) строка из одного слова "ggп11" не проходит тест
18 Кирпич
 
20.10.16
12:00
(17) регулярки это бесконечно :))
"[\w]+[А-Яа-яЁё]+[\w]*[\W$]*|[\w]*[А-Яа-яЁё]+[\w]+[\W$]*"
19 Timon1405
 
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
хотя если ИЛИ цифры ИЛИ латинские буквы, то пойдет
23 Timon1405
 
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|$)"
27 Timon1405
 
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|$)"
всё. надоело.
30 DTX 4th
 
20.10.16
15:19
надо, чтобы была и цифра и латинская буква? Т.е.
"1я" попадает под патерн?
31 Кирпич
 
20.10.16
15:27
(30)я сам не знаю надо или не надо. в (29) тоже неправильно как то получилось. может так канает:
"[А-Яа-яЁё\w]+(?:[А-Яа-яЁё]+\w+|\w+[А-Яа-яЁё]+)+(?=\s|$)"
32 DTX 4th
 
20.10.16
15:31
(30) Если попадает, то вот:

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

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

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

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

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