|   |   | 
| 
 | Не работает регулярное выражение. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Zombi 08.10.25✎ 09:41 | 
        Пытаюсь сделать отбор с поиском целого слова. Средствами регулярного обмена вроде должно работать так:
 Если мы ищем конкретное слово, то можно использовать метасимвол \b, обозначающий границу слова. Если поставить метасимвол с обоих концов слова, мы найдем именно это слово: Regex: \bарка\b Найдет: арка Не найдет: чарка аркан баварка знахарка У меня не срабатывает. Что не так? 
 | |||
| 1
    
        Dzenn гуру 08.10.25✎ 08:09 | 
        Давай, я спрошу у Квена вместо тебя:
 https://chat.qwen.ai/s/91494cb3-1329-40cd-b2e2-5dae1fef96fe?fev=0.0.222 | |||
| 2
    
        Zombi 08.10.25✎ 08:31 | 
        (1) На regex101.com попробовал /\bарка\b/u отрабатывает нормально. В 1с не получается:
 РегулярноеВыражение = "/\bарка\b/u"; Пока Выборка.Следующий() Цикл Если СтрПодобнаПоРегулярномуВыражению(Выборка.Номенклатура, РегулярноеВыражение) Тогда Условие не отрабатывает. Выборка.Номенклатура = "Триумфальная арка была". 
 | |||
| 3
    
        Zombi 08.10.25✎ 08:34 | 
        Вот так тоже на сайте отрабатывает, в 1с нет:
 РегулярноеВыражение = "/(?<![а-яА-ЯёЁ])арка(?![а-яА-ЯёЁ])/ug"; Пока Выборка.Следующий() Цикл Если СтрПодобнаПоРегулярномуВыражению(Выборка.Номенклатура, РегулярноеВыражение) Тогда | |||
| 4
    
        Волшебник 08.10.25✎ 08:56 | 
        А с чего Вы взяли, что должно?     | |||
| 5
    
        Zombi 08.10.25✎ 09:08 | 
        (4) Ну наверное что то не так сделал. Потому и спрашиваю.     | |||
| 6
    
        Волшебник 08.10.25✎ 09:14 | 
        (5) Покажите документацию на регулярные выражения 1С     | |||
| 7
    
        Zombi 08.10.25✎ 09:20 | 
        (6) Вот СП
 СтрПодобнаПоРегулярномуВыражению (StrLikeByRegularExpression) Синтаксис: СтрПодобнаПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ИгнорироватьРегистр>, <МногострочныйПоиск>) Параметры: <Строка> (обязательный) Тип: Строка. Исходная строка. <РегулярноеВыражение> (обязательный) Тип: Строка. Регулярное выражение, на соответствие которому проверяется исходная строка. <ИгнорироватьРегистр> (необязательный) Тип: Булево. Истина - без учета регистра, Ложь - с учетом регистра. Значение по умолчанию: Ложь. <МногострочныйПоиск> (необязательный) Тип: Булево. Истина - выполняется многострочный поиск: символу "^" в шаблоне регулярного выражения соответствует начало каждой строки значения параметра <Строка>, символу "$" - конец каждой строки. Ложь - символу "^" в шаблоне регулярного выражения соответствует начало значения в параметре <Строка>, символу "$" - конец текста. Значение по умолчанию: Ложь. Возвращаемое значение: Тип: Булево. Истина - строка соответствует регулярному выражению; Ложь - в противном случае. Описание: Проверяет, соответствует ли передаваемая строка передаваемому шаблону исходного выражения. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: РегВыражение = "(\+)?([- ()]?\d[- _():=+]?){10,14}"; Строка = "+9(999)999 99-99"; Результат = СтрПодобнаПоРегулярномуВыражению(НомерТелефона, РегВыражение); Использование в версии: Доступен, начиная с версии 8.3.23. Описание изменено в версии 8.3.24. Методическая информация | |||
| 8
    
        Волшебник 08.10.25✎ 09:23 | 
        (7) и где здесь \b ?     | |||
| 9
    
        Zombi 08.10.25✎ 09:25 | 
        (8) <РегулярноеВыражение> (обязательный)
 Тип: Строка. Здесь | |||
| 10
    
        Волшебник 08.10.25✎ 09:29 | 
        (9) там нет ничего     | |||
| 11
    
        Zombi 08.10.25✎ 09:31 | 
        (10) Туда шаблон передается. В нем применяется \b в том числе.     | |||
| 12
    
        Zombi 08.10.25✎ 09:35 | 
        \b    граница слова, например:
 \bsun\b — найдет sun, но не sunny https://www.about1c.ru/v83/language-reference/regexp | |||
| 13
    
        Волшебник 08.10.25✎ 09:36 | 
        (12) это не официальная информация     | |||
| 14
    
        DiMel_77 08.10.25✎ 10:14 | 
        (0) Я думаю, что 1С при реализации работы с регулярными выражениями использовала "VBScript.RegExp", а там есть особенность при поиске слов - декларированная граница слова \b распространяется только на слова, написанные буквами [A-Za-z].
 Т.е. если искать \bsun\b - то найдет, а вот если искать \bарка\b, то нет. | |||
| 15
    
        Zombi 08.10.25✎ 10:18 | 
        (14) Тогда как с кириллицей быть?     | |||
| 16
    
        DiMel_77 08.10.25✎ 10:43 | 
        (15) Интересный вопрос, но к 1С это имеет слабое отношение. Попробуйте что нибудь из этого https://ru.stackoverflow.com/questions/560989/%D0%93%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85-%D1%81%D0%BB%D0%BE%D0%B2-%D0%B2-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D1%85-javascript     | |||
| 17
    
        Волшебник 08.10.25✎ 10:45 | 
        Qwen предлагает такие варианты:
 /(?<!\w)арка(?!\w)/u (?<![а-яА-ЯёЁ])арка(?![а-яА-ЯёЁ]) | |||
| 18
    
        SilentMan 08.10.25✎ 11:13 | 
        (14) 1c про свои регулярки немного по другому думает (про то, на чем они основаны), но кого это волновало :)
 Ну и там еще есть параметр, который управляет поведение \b RTFM? https://its.1c.ru/db/v83doc#bookmark:dev:TI000002650 | |||
| 19
    
        Волшебник 08.10.25✎ 11:17 | 
        (18) 👍 Вот это уже пруф!     | |||
| 20
    
        Timon1405 08.10.25✎ 11:28 | 
        (0) regex101 все работает, переключитесь в ветке FLAVOR слева на диалект .NET
 СтрПодобнаПоРегулярномуВыражению возвращает совпадение или нет по шаблону ЦЕЛОЙ исходной строки вместо него используйте СтрНайтиПоРегулярномуВыражению (17) мимо, в vbscript нет ретроспективных проверок | |||
| 21
    
        Zombi 08.10.25✎ 11:34 | 
        (17) Не работают эти варианты. Проверил.     | |||
| 22
    
        Zombi 08.10.25✎ 11:37 | 
        (20) А так заработало. Спасибо.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |