Регулярное выражение для заглавных букв

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

У меня похожая структура

...
Title = {Direct synthesis of antimicrobial coatings based on tailored bi-elemental nanoparticles},
journal={APL Mat.},
...

и я хочу использовать только заглавные слова в разделе заголовка, чтобы он стал

...
Title = {Direct Synthesis of Antimicrobial Coatings Based on Tailored Bi-Elemental Nanoparticles},
journal={APL Mat.},
...

Я попытался использовать регулярное выражение lookbehing для поиска каждого слова с последующим словом "Заголовок" следующим образом

(?<=Title)(\b.+?\b)

и я хочу заменить его

\u\1

для каждого вхождения в тексте. Однако мой код только выбирает символ после "e" в заголовке и "D" в Direct и не может найти другие вхождения после этого.

Вы можете мне помочь? Спасибо.

1 ответ

Решение

Вы можете использовать

(\G(?!^)(?:[^}\n\w]+(?:o[fn]|in|the|by|for|to|and*|a))*[^}\n\w]+|Title\s*=\s*\{)(\w+)

и заменить на $1\u$2, Посмотрите демонстрацию regex (она немного изменена, поскольку regex101, похоже, не поддерживает \u оператор).

подробности

  • (\G(?!^)(?:[^}\n\w]+(?:o[fn]|in))*[^}\n\w]+|Title\s*=\s*\{) - любой из двух вариантов:
    • \G(?!^)(?:[^}\n\w]+(?:o[fn]|in|the|by|for|to|and*|a))*[^}\n\w]+:
    • \G(?!^) - конец предыдущего матча
    • (?:[^}\n\w]+(?:o[fn]|in))* - 0 или более повторений
      • [^}\n\w]+ - 1 или более символов, кроме }НЧ и слово чар
      • (?:o[fn]|in|the|by|for|to|and*|a) - of, on или же inи т. д. (добавьте больше слов, которые следует исключить из заглавных букв здесь)
    • [^}\n\w]+ - 1 или более символов, кроме }НЧ и слово чар
    • | - или же
    • Title\s*=\s*\{ - Title, = заключено в 0+ пробелов и {
  • (\w+) - Группа 2: одно или несколько символов слова.
Другие вопросы по тегам