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

时间:2018-12-13 21:21:49

标签: notepad++ case-sensitive uppercase lowercase emeditor

在此布局中,我有一个很大的文件:

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 +中的正则表达式,但无济于事。 不幸的是,我不是脚本编写者,所以我不能自己写。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

替换为::\l($1)\u($2)

启用设置:“环绕并匹配”大小写

搜索模式:正则表达式

按全部替换。

说明

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

enter image description here

答案 1 :(得分:1)

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

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

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

以下是此操作的GIF:

enter image description here

查找内容字段的细分:

    正则表达式前面的
  • ^代表一行的开头,结尾的$代表一行的结尾。这样可以防止它变得懒惰或换行。
  • ([^:]+:)代表行首的字符,允许:以外的所有字符。这是组$1
  • (([A-Z])|([a-z]))代表:之后的第一个字符。如果除了大写或小写字母外,其他任何内容都将跳过该行。
    • $2将是第一个字符,无论大小写如何。我们将在替代产品时忽略它。
    • $3如果是大写字母,将是第一个字符,否则$3将为空。
    • $4如果是小写字母,将是第一个字符,否则$4将为空。
  • ([^:]+)代表行尾的字符,允许:以外的所有字符。这是组$5

替换为字段的明细:

  • $1将是如上所述的第一组
  • \L$3\E将如上所述将组$3转换为小写。
  • \U$4\E' will convert group $ 4`如上所述,大写。
  • $5将是如上所述的最后一组

\L\U分别代表“开始转换为小写字母”或“大写字母”。 \E代表“停止转换”。由于$3$4中只有一个包含第一个字符(另一个将为空白),因此仅在需要时才进行转换。