Как удалить окружающие кавычки/форматирование блока кода в моем регулярном выражении?

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

/(```[^```]*```)|("[^"]*")|[^" \n]+/g


person Vegeo Studios    schedule 07.02.2020    source источник
comment
Пара вопросов: 1. Какой язык используете? Не могли бы вы привести несколько примеров того, что вы пытаетесь сопоставить?   -  person entpnerd    schedule 08.02.2020
comment
Звучит как хорошая возможность использовать группу без захвата, т.е. (?:...)   -  person Oliver Too Eh    schedule 08.02.2020
comment
Это: [^```]* то же самое, что иметь класс символов только с одной обратной кавычкой [^']* (пришлось использовать простую кавычку во втором примере)… это не означает 3 обратные кавычки в строка. В дополнение к группам без захвата, как упоминает Оливер, вам, вероятно, нужен негативный прогноз.   -  person Stephen P    schedule 08.02.2020


Ответы (1)


Итак, я потратил несколько часов на изучение регулярных выражений и создал некоторый код регулярных выражений, который делает именно то, что мне нужно:

/(?:(?<=`{3})[a-z]*\n[\s\S]*?\n(?=`{3}))|(?:(?<=")[^"]*(?="))|[^" \n(`{3})]+/g

Это соответствует блокам кода, исключая уценку, строкам в кавычках, исключая кавычки, и отдельным словам.

person Vegeo Studios    schedule 08.02.2020