将第一个小写字母转换为大写字母,将大写字母转换为小写字母(正则表达式?)

Convert first lowercase to uppercase and uppercase to lowercase (regex?)

我在这个布局中有一个巨大的文件:

world12345:Betaalpha    
world12344:alphabeta    
world12343:ZetaBeta    
world12342:!betatheta

我需要将“:”之后的第一个小写字母转换为大写,并将第一个大写字母转换为小写。 我试过使用 notepad++ 和 emeditor,但我对正则表达式没有那么多经验。

这就是我希望它在(正则表达式?)

之后变成的样子
world12345:betaalpha    
world12344:Alphabeta    
world12343:zetaBeta    
world12342:!betatheta   (unchanged, as the first char is a special char)

我曾尝试在网络上搜索 npp+ 中的正则表达式,但无济于事。 不幸的是,我不是脚本编写者,所以我不能自己写一个。

提前致谢!

感谢 this answer,我在最初认为不可能的情况下找到了解决您问题的方法。

在 Notepad++ 中执行此操作的方法是使用以下选项:

  • 打开“替换”对话框(Ctrl + H)
  • 查找内容:^([^:]+:)(([A-Z])|([a-z]))([^:]+)$
  • 替换为:\L\E\U\E
  • 检查匹配大小写
  • 选中环绕
  • Select 正则表达式
  • 取消选中 。匹配换行符
  • 全部替换

这是实际操作的 GIF:

查找内容字段的细分:

    正则表达式前面的
  • ^表示一行的开始,末尾的$表示一行的结束。这可以防止它变得懒惰或换行到下一行。
  • ([^:]+:)表示行首的字符,允许除:以外的所有字符。这是组 </code></li> <li><code>(([A-Z])|([a-z]))表示:之后的第一个字符。如果除了大写或小写字母之外还有其他任何内容,它将跳过该行。
    • </code>会是第一个字符,不分大小写。我们将在替换中忽略这一点。</li> <li>组<code>若为大写则为第一个字符,否则</code>为空</li> <li>组<code>若为小写则为第一个字符,否则</code>为空</li> </ul></li> <li><code>([^:]+)表示行尾的字符,允许除:以外的所有字符。这是组 </code>.</li> </ul> <p><em>替换为</em>字段的细分:</p> <ul> <li><code> 将是如上所述的第一组
    • \L\E 会将组 </code> 如上所述转换为小写。</li> <li><code>\U\E' will convert group$4` 如上所述转为大写。
    • </code> 将是如上所述的最后一组</li> </ul> <p><code>\L\U分别代表"beginning converting to lowercase"或"uppercase,"。 \E 代表 "stop converting." 由于 </code> 或 <code> 中只有一个包含第一个字符(另一个将为空白),因此仅在我们想要的情况下进行转换。

这是我能想到的最简单的解决方案。

查找内容::(\u)|:(\l)

替换为::\l()\u()

启用设置:环绕和匹配大小写

搜索方式:正则表达式

按全部替换。

说明

\u matches & converts uppercase, \l matches & converts lowercase.