|
Помогите с регуляркой | ☑ | ||
---|---|---|---|---|
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
|
(48) https://regexper.com/#%5E.*%5Ba-z%5Cd%5D.*%5Bа-я%5D.*%24%7C%5E.*%5Bа-я%5D.*%5Ba-z%5Cd%5D.*%24
чотко видно два путя |
|||
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
|
ага. и картинка красивая
https://regexper.com/#%5B%5Cwа-я%5D*(%3F%3A(%3F%3A%5Bа-я%5D%5Cw)%7C(%3F%3A%5Cw%5Bа-я%5D))%5B%5Cwа-я%5D* |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |