|   |   | 
| 
 | Помогите с регуляркой | ☑ | ||
|---|---|---|---|---|
| 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* | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |