Регулярное выражение для заглавных букв - PullRequest
0 голосов
/ 29 мая 2018

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

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

...
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

для каждого вхождения в тексте.Однако мой код только выбирает символ после «е» из Заголовок и «D» из Прямой , и не может найти другие вхождения после этого.

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

1 Ответ

0 голосов
/ 29 мая 2018

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

(\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 или более символов, отличных от }, LF и слова char
      • (?:o[fn]|in|the|by|for|to|and*|a) - of, on или in и т. д.( добавить здесь больше слов, которые следует исключить из заглавных букв )
    • [^}\n\w]+ - 1 или более символов, отличных от }, LF и слово char
    • | - или
    • Title\s*=\s*\{ - Title, =, заключенные в 0+ пробелов и {
  • (\w+) - группа 2: одно или несколько символов слова.
...