Подтвердить что ты не робот

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]
4b9b3361

Ответ 1

Измените ваше регулярное выражение так, чтобы .+ стало ленивым:

\\cite\[(.+?)\]\{(.+?)\}
           ^        ^

Создание жадного квантификатора означает "ленивый" означает, что вместо совпадения, насколько это возможно, оно будет соответствовать как можно меньше. В текущем регулярном выражении . будет соответствовать всем символам, пока не найдет другой ) (за которым последуют другие символы в регулярном выражении).

Или использовать отрицаемые классы:

\\cite\[([^\]]+)\]\{([^}]+)\}