使用正则表达式将char转换为大写(EditPad Pro)


159

我写了一个正则表达式,希望我可以将每一个匹配(只是一个字符)替换为大写字符。我正在使用EditPad Pro(但是我愿意使用任何其他允许我执行此操作的工具,只要可以免费尝试,因为我只需要执行一次即可)。

背景:我有一个非常长的文本文件,由区分大小写的应用程序使用,有些单词以小写字母而不是大写char开头,从而使应用程序崩溃。手工完成这将花费很长时间,并且如果不使用正则表达式将非常复杂,因为(邪恶的)小写字符char的出现是非常特定的。

我已经编写了select正则表达式,现在可以将其与反向引用一起使用($ 1可以正常工作),但是我不能用大写char代替它。我以为\ u $ 1之类的东西可以工作,但是在EditPad Pro中却不行。

如果没有免费的工具允许我执行此操作,那么我猜替代方法是仅使用C#进行操作,但是我有点着急,而且没有靠近编译器,因此我必须先下载快速版本,因此...最好找到一种支持这种功能的工具!

谢谢!


3
这个问题更适合超级用户吗?
georgiecasey 2012年

Answers:


272

TextPad将允许您执行此操作。

例:

test this sentence

查找内容:\([^ ]*\) \(.*\) 替换为:\U\1\E \2

\U将导致以下所有字符为高

\E将关闭\U

结果将是:

TEST this sentence

13
是否可以在.NET Regex中执行此操作(不使用ToUpper)?
Shimmy Weitzhandler,2011年

34
也可以在notepad ++中使用。
肖恩

33
\U$1\E崇高文字中
Qwerty 2014年

10
\U\1\EVim
J. Katzwinkel 2014年

6
也可以在PHPStorm中使用。我有相反的要求。我必须将所有大写的属性值(可能是90年代的HTML)替换为小写。使用\L$1\E有效。
Ejaz

30

我知道此线程与EditPad Pro有关,但是我来到这里是因为我对javascript正则表达式也有同样的需求。

对于这里需要相同技巧的人们,您可以使用函数或lambda作为replace参数。

我使用下面的函数将css名称转换-为与javascript等价的名称,例如,"border-top"将转换为"borderTop"

    s = s.replace(/\-[a-z]/g, x => x[1].toUpperCase());

26

EditPad Pro和PowerGREP具有独特的功能,可让您更改后向引用的大小写。 \U1以大写,\L1小写 插入第一个反向引用,以大写形式插入第\F1一个字符,其余以小写形式插入。最后,\I1插入每个单词的首字母大写,其他字母小写。

资料来源:Goyvaerts,2006年1月。正则表达式:完整教程。Lulu.com。p。35。ISBN1411677609。Google图书。于2010年6月25日检索。


6

您可以在jEdit中执行此操作,方法是使用jEdit的“查找和替换”对话框中的“返回BeanShell片段的值”选项。只需搜索" [a-z]"并替换为" _0.toUpperCase()"(不带引号)


1
您的回答与最初的问题并没有真正的关系,但是我在谷歌搜索时发现了它,这正是我所寻找的。很好,谢谢!
adietisheim 2012年

5

您也可以使用\I1\I2等(而不是$1和)将匹配的首字母大写$2


1

只是Notepad ++另一个用法示例(正则表达式搜索模式)

Find: (g|c|u|d)(et|reate|pdate|elete)_(.)([^\s (]+)
Replace: \U\1\E$2\U\3\E$4

例:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.