#json #regex #vscode-extensions
Вопрос:
Я пытаюсь написать выражение, которое будет использоваться с файлами json для расширения vscode. Мое выражение должно начинаться с "=s*"
, а затем я хочу, чтобы оно выбирало все после равного, за исключением следующих случаев:
TRUE
илиFALSE
после равенства- начиная с цифры
- начиная с «или»
Я перепробовал много вещей, и в каждом отдельном случае мне удается заставить это работать, но когда я пытаюсь собрать все это вместе, это не работает
Пример строк документа:
abc = тест
abc = ИСТИННАЯ
abc = ЛОЖНАЯ
abc = «тест»
abc = «тест»
abc = 123
Из этих примеров мое регулярное выражение должно содержать только самое первое, и «тест» может быть чем угодно.
Что было ближе всего к решению, так это то, что /(=s*)^(((?!TRUE|FALSE|[0-9]|"|').)*)$/gm
Комментарии:
1. Пожалуйста, добавьте то, что вы пытались ответить на этот вопрос. В чем конкретно заключалась проблема с «соединением» шаблонов? Есть ли у вас какие-либо тестовые примеры/тексты, которые вы тестировали? Пожалуйста, также добавьте его сюда и укажите ожидаемое поведение.
2. возможно, даже добавить тестовые примеры, такие как «abc», должно совпадать, но «abd» не должно совпадать
3. Возможно, вы просто пытаетесь прочитать что-то вроде файла dotenv , и вам, вероятно, следует обратиться к уже существующему решению .
4. Извините, вы хотите, чтобы совпадала вся строка или только
=
пробелы? Если последнее используется=(?!s*(?:TRUE|FALSE|[0-9"']))s*
, то, в противном случае, используйте.*=(?!s*(?:TRUE|FALSE|[0-9"'])).*
5. Похоже, вы планируете анализировать JSON с помощью регулярных выражений. Если это так, то это не тот инструмент, который нужно использовать, и вы столкнетесь с проблемами, когда получите JSON, который выглядит не совсем так, как вы ожидаете.
Ответ №1:
Вы можете использовать
Найти что: ^(.*?=)(?!s*(?:TRUE|FALSE|[0-9"'])).*
Заменить На: $1
Подробные сведения:
^
— начало строки(.*?=)
— Группа 1: любые нулевые или более символов, кроме символов разрыва строки, как можно меньше, а затем=
символ(?!s*(?:TRUE|FALSE|[0-9"']))
— отрицательный внешний вид, который не соответствует совпадению, если сразу справа от текущего местоположения естьs*
— ноль или более пробелов(?:TRUE|FALSE|[0-9"'])
—TRUE
,FALSE
, цифра или"
или'
.*
— остальная часть очереди.
Смотрите демонстрацию регулярных выражений и демонстрационный скриншот: