Регулярное выражение javascript для соответствия символу, если не внутри блока кода уценки

Я пытаюсь выяснить, как сопоставить все символы ', которые не находятся между блоком кода уценки. Использование расширения VSCode заменить

VSCode, похоже, использует регулярное выражение Javascript.

бывший:

match this one '

```
don't match this
```

match this as well '

```
not this one '
```

yes to this one '

`not this ' one`

цель состоит в том, чтобы заменить совпадающие на символ

На данный момент у меня есть это регулярное выражение:

(?:(?!`[.\n]*?'))(')[.\n]*?(?!`)

которые соответствуют всем ', даже находящимся в кодовом блоке.

в зависимости от движка регулярных выражений это может быть проще или нет, это PCRE?

Nahuel Fouilleul 30.05.2018 14:49

Я пытаюсь использовать плагин regreplace для VSCode, я не знаю, какой механизм регулярных выражений использует vscode: - /

Geob-o-matic 30.05.2018 14:56

Вы не сможете сделать это в VSCode, используйте SublimeText3 с это регулярное выражение.

Wiktor Stribiżew 30.05.2018 14:58

Это не разовая задача, я пишу свой блог с помощью vscode, и мне нужна была автоматизация типографики :)

Geob-o-matic 30.05.2018 15:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать это в крайнем случае. Он находит ', который предшествует любому четному набору разделителей кода `
что означает, что это снаружи, а не внутри.

Я говорю это в крайнем случае, потому что это неэффективный способ сделать это. Но это не должно быть так уж плохо, если количество блоков не так велико.

Находить:

'(?=[^`]*(?:`[^`]*`[^`]*)*$)  

Заменить:

Пример: https://regex101.com/r/gdkvdq/1

Читаемая версия:

 ' 
 (?=
      [^`]* 
      (?:
           ` [^`]* ` 
           [^`]* 
      )*
      $ 
 )

Пока VSCode не использует ECMA 2018 (с поддержкой ретроспективного просмотра), я думаю, у меня нет выбора, спасибо!

Geob-o-matic 31.05.2018 10:26

Другие вопросы по теме

Регулярное выражение в javascript разрешает только числа и одну точку, за которой следует максимум 2 числа
В регулярном выражении для Word раньше не было определенных слов
PHP RegEx Исключение ДВУХ строк из строки
Как я могу создать регулярное выражение, которое соответствует строке, содержащей слово из одного списка, И не содержит слова из другого списка?
Строка соответствия регулярному выражению с одинарным знаком "в конце"
Регулярное выражение для извлечения каждого слова между дефисами
Сопоставление строки с отрицательным прогнозом в Python RegEx
Регулярное выражение - принимать букву, цифру, подчеркивание, но не принимать конкретную строку
Сопоставление слов, которые не начинаются с определенной буквы, с помощью регулярного выражения
Регулярное выражение C# для инвертированного класса символов, если символы не находятся рядом друг с другом