正则表达式将单词大写

Regex to capitalize words

我正在使用文本编辑器将参考文件中的论文标题大写。

我有类似的结构

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

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

我想用

代替它
\u

对于文本中的每一次出现。 但是我的代码只选择 Title 的 "e" 和 Direct 的 "D" 之后的字符,以及 在那之后找不到其他出现的地方

你能帮帮我吗?谢谢。

您可以使用

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

并替换为 \u。请参阅 regex demo(由于 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]+ - 除了 }、LF 和一个单词 char
      • 之外的 1 个或多个字符
      • (?:o[fn]|in|the|by|for|to|and*|a) - ofonin 等(在此处添加更多应从大写中排除的单词)
    • [^}\n\w]+ - 除了 }、LF 和一个单词 char
    • 之外的 1 个或多个字符
    • | - 或
    • Title\s*=\s*\{ - Title= 包含 0+ 个空格和一个 {
  • (\w+) - 第 2 组:一个或多个单词字符。