@Freethinker said in Как добавить */ (звездочка слэш) в переменную?:
Хмм, сам код отрабатывает в BAS также корректно, однако если добавить действие "Установить переменную", то это вызовет проблему. Надо посмотреть по внимательнее
В коде:
[[WORD]] = 'word';
re = new RegExp('(?<![a-z])' + [[WORD]] + '(?![a-z])', 'gi');
log('notreplaceword wordnotreplace, replace: word 1word word2 word, $word word?'.replace(re, 'new_word'));
SyntaxError: Invalid regular expression: unrecognized character after (? во время выполнения действия 136939356
В ноде:
[[WORD]] = 'word';
re = new RegExp('(?<![a-z])' + [[WORD]] + '(?![a-z])', 'gi');
console.log('notreplaceword wordnotreplace, replace: word 1word word2 word, $word word?'.replace(re, 'new_word'));
SyntaxError: Invalid regular expression: /(?<![a-z])word(?![a-z])/: Invalid group
Регулярка рабочая.
@Mic Проблема в регулярке, у тебя даже тут не выделяет результат https://regex101.com/r/haZ6k7/2
Что тебе нужно спарсить?
Пример ([0-9|word|0-9]+)

@m1st Как это не выделяет? Перейдите по моей ссылке (https://regex101.com/r/haZ6k7/2) и увидите что она выделяет как раз то, что нужно, слово, которое не окружено текстом:

@Mic said in Как пользоваться регулярками в басе?:
@m1st Как это не выделяет? Перейдите по моей ссылке (https://regex101.com/r/haZ6k7/2) и увидите что она выделяет как раз то, что нужно, слово, которое не окружено текстом:
Вы перейдите в Firefox и обнаружите, что ваша регулярка вообще ошибочна

@Mic said in Как пользоваться регулярками в басе?:
@Fox said in Как пользоваться регулярками в басе?:
Вы перейдите в Firefox и обнаружите, что ваша регулярка вообще ошибочна
Это видимо Firefox не поддерживает Negative Lookbehind. В Chrome все работает. Можно сделать чтобы в БАСе это тоже заработало?
Скажите, вы сами создавали эту регулярку или использовали конструктор?
@Mic said in Как пользоваться регулярками в басе?:
@Fox said in Как пользоваться регулярками в басе?:
Скажите, вы сами создавали эту регулярку или использовали конструктор?
Сам, я не знаю что вы имеете ввиду под словом конструктор.
Конструктор в моём понимании, это любая программа, в которой вы указываете какие данные меняются, а какие остаются и она выдаёт вам готовую регулярку.
@Fox said in Как пользоваться регулярками в басе?:
Конструктор в моём понимании, это любая программа, в которой вы указываете какие данные меняются, а какие остаются и она выдаёт вам готовую регулярку.
Нет, я открыл regex101.com и написал все что мне надо: слово, которое не окружено текстом, указанным в квадратных скобочках. Вроде ничего супер сложного, самая простая регулярка.

Как такое в БАС повторить?
@Mic said in Как пользоваться регулярками в басе?:
Нет, я открыл regex101.com и написал все что мне надо: слово, которое не окружено текстом, указанным в квадратных скобочках. Вроде ничего супер сложного, самая простая регулярка.
Это из если не ошибся из версии 2018 года и не поддерживается движком js который есть в БАС и даже версией node.js, которая в него встроена.
Но ваше выражение прекрасно работает через встроенный кубик
Нашел альтернативу, которая в коде работает:
[[A]] = 'notreplaceword wordnotreplace, replace: Word 3wOrd worD4 word 1word word2 3Word WORD4 word,5worD worD6; $word word? WorD';
log([[A]]);
log([[A]].replace(/(^|[^a-z])word(?![a-z])/gi, "$1w'ord"));
notreplaceword wordnotreplace, replace: Word 3wOrd worD4 word 1word word2 3Word WORD4 word,5worD worD6; $word word? WorD
notreplaceword wordnotreplace, replace: w'ord 3w'ord w'ord4 w'ord 1w'ord w'ord2 3w'ord w'ord4 w'ord,5w'ord w'ord6; $w'ord w'ord? w'ord
Но все равно интересно, неужели кубик Заменить строку не поддерживает case insensitive? Пересмотрел весь форум, нашел слова разработчика про этот кубик, но там ничего не сказано про case insensitive.
@support said in Не работает регулярка в БАС:
@Gang Обновил модуль регулярных выражений.
Перевел движок с js на с++, это означает, что теперь регулярки поддерживают lookbehind, unicodeproperties и многое другое.
Если говорить просто, то регулярные выражения теперь можно копировать с другого софта без доработки.Действие Первое вхождение теперь может получать все группы в разные переменные. Нужно просто записать переменные через запятую(как в действии Парсить строку).
Действие Извлечь все данные может получать конкретную группу, для этого ей нужно присвоить имя result.
Появилось действие Заменить строку через регулярки.
К каждому действию добавлены примеры и описание.
Новую версию модуля можно попробовать скачав по ссылке RegularExpression.zip или подождав новую версию БАС.
@Mic said in Как пользоваться регулярками в басе?:
Не понял только как в кубике ключи gmi указывать? Особенно нужен i, чтобы для заглавных тоже работало.
Флаг "g" по всей видимости и так включен, а "i" видимо не как. Можно или переписать на альтернативный вариант как у вас выше. Или накостылить вроде такого
(?<![a-z])(word|Word|WORD)(?![a-z])
@Mic said in Как пользоваться регулярками в басе?:
ну не верю я, что про i могли забыть.
Да легко xD
(?i) в начале выражения включает case insensitive
@Vituskosoy said in Как пользоваться регулярками в басе?:
(?i) в начале выражения включает case insensitive
Добавьте эту строчку в подсказку внутри кубика.