3

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

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

提前致谢!

4

2 回答 2

5

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

找什么::(\u)|:(\l)

用。。。来代替::\l($1)\u($2)

启用设置:环绕和匹配案例

搜索方式:正则表达式

按全部替换。

解释

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

在此处输入图像描述

于 2018-12-13T22:08:02.060 回答
2

多亏了这个答案,我在最初认为不可能的情况下找到了解决您问题的方法。

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

  • 打开替换对话框 ( Ctrl+ H)
  • 找什么:^([^:]+:)(([A-Z])|([a-z]))([^:]+)$
  • 用。。。来代替:$1\L$3\E\U$4\E$5
  • 检查火柴盒
  • 检查环绕
  • 选择正则表达式
  • 取消选中。匹配换行符
  • 全部替换

这是一个实际的 GIF:

在此处输入图像描述

Find what字段的细分:

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

替换为字段的细分:

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

\L\U分别代表“开始转换为小写”或“大写”。\E代表“停止转换”。由于只有一个$3$4将包含第一个字符(另一个将为空白),因此仅在我们想要的情况下转换。

于 2018-12-13T22:00:57.307 回答