将第一个小写字母转换为大写字母,将大写字母转换为小写字母(正则表达式?)
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.
我在这个布局中有一个巨大的文件:
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.