Sublime Text - регулярное выражение для поиска и замены
Я хочу использовать поиск и замену регулярным выражением, чтобы включить следующий текст:
"какой-то текст, который мне не нужен \cite[p. 6]{some-bibtex-citation}
еще немного текста, мне даже меньше нравится \cite [p. 321/4] {и-another-citation-from-bibxtex} и еще больше текста."
в это:
"какой-то текст, который мне не нужен [\citem{author}{some-bibtex-citation}, p. 6]
еще немного текста, мне даже меньше нравится [\citem{author}{and-another-citation-from-bibxtex}, p. 321 / 4]
и еще больше текста."
Как вы можете видеть, все вхождения \cite были заменены другим. Они теперь окружены [и], и все они начинаются с [citem {author}
Я попробовал его со следующим поисковым регулярным выражением, которое в основном работает, но может сразу выбрать слишком много текста:
\\cite\[(.+)\]\{(.+)\}
Замените regex, который я использовал для этого:
[\\citem{author}{\2}, \1]
Ответы
Ответ 1
Измените ваше регулярное выражение так, чтобы .+
стало ленивым:
\\cite\[(.+?)\]\{(.+?)\}
^ ^
Создание жадного квантификатора означает "ленивый" означает, что вместо совпадения, насколько это возможно, оно будет соответствовать как можно меньше. В текущем регулярном выражении .
будет соответствовать всем символам, пока не найдет другой )
(за которым последуют другие символы в регулярном выражении).
Или использовать отрицаемые классы:
\\cite\[([^\]]+)\]\{([^}]+)\}