Я пытаюсь выяснить, как сопоставить все символы ', которые не находятся между блоком кода уценки. Использование расширения 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]*?(?!`)
которые соответствуют всем ', даже находящимся в кодовом блоке.
Я пытаюсь использовать плагин regreplace для VSCode, я не знаю, какой механизм регулярных выражений использует vscode: - /
Вы не сможете сделать это в VSCode, используйте SublimeText3 с это регулярное выражение.
Это не разовая задача, я пишу свой блог с помощью vscode, и мне нужна была автоматизация типографики :)





Вы можете использовать это в крайнем случае.
Он находит ', который предшествует любому четному набору разделителей кода `
что означает, что это снаружи, а не внутри.
Я говорю это в крайнем случае, потому что это неэффективный способ сделать это. Но это не должно быть так уж плохо, если количество блоков не так велико.
Находить:
'(?=[^`]*(?:`[^`]*`[^`]*)*$)
Заменить: ’
Пример: https://regex101.com/r/gdkvdq/1
Читаемая версия:
'
(?=
[^`]*
(?:
` [^`]* `
[^`]*
)*
$
)
Пока VSCode не использует ECMA 2018 (с поддержкой ретроспективного просмотра), я думаю, у меня нет выбора, спасибо!
в зависимости от движка регулярных выражений это может быть проще или нет, это PCRE?