用小写字母替换大写
Posted
技术标签:
【中文标题】用小写字母替换大写【英文标题】:Replace uppercase with lowercase letters 【发布时间】:2014-01-11 14:03:15 【问题描述】:我正在尝试使用正则表达式将大写字母替换为相应的小写字母。 这样
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
变成
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
在崇高的文本中。如何仅在包含小写和大写字母的单词中小写字母?这样它会影响venUs
而不是VENUS
。
【问题讨论】:
【参考方案1】:你可以:
查找:(\w)
替换为:\L$1
或者选择文字,ctrl+K+L。
【讨论】:
超级。很有用。您能否指出一些列出诸如 '\L' 之类的转换的资源? Sublime 使用 Boost 来支持正则表达式,这些是格式字符串的文档,例如 \L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/… 在 IntelliJ 中 注意:要转为大写,您需要\U
若要仅小写单个参数,请将 \E 放在其后以结束小写部分:$1\L$2\E$3
【参考方案2】:
我认为这对其他人也可能派上用场:
找到:
([A-Z])(.*)
替换:
\L$1$2
--> 将 $1
和 $2
中的所有字母转换为小写BUT
\l$1$2
--> 只会将$1
的第一个字母转换为小写,其余的保持原样
\U
和 \u
的大写字母也是如此
【讨论】:
\l$1$2
在这种情况下只会使整个$1
小写,因为$i
只包含一个字母。 \l
=> 后面的第一个字母为小写,\u
=> 后面的第一个字母为大写。其中\U
和\I
对以下所有字母进行处理。
请注意,\E
会终止 \L
或 \U
序列。【参考方案3】:
在使用[A-Z]
之类的正则表达式进行搜索之前,您应该按区分大小写的按钮(或Alt+C)(如@987654321 @ 在接受的答案中进行编辑)。为了清楚起见,我将留下一些其他示例:
-
Capitalize的话
查找:
(\s)([a-z])
(\s
也匹配新行,即“venuS”=>“VenuS”)
替换:$1\u$2
取消大写单词
查找:(\s)([A-Z])
替换:$1\l$2
删除camel case(例如 cAmelCAse => camelcAse => camelcase)
查找:([a-z])([A-Z])
替换:$1\l$2
单词中的小写字母(例如 LowerCASe => 小写)
查找:(\w)([A-Z]+)
替换:$1\L$2
替代替换:\L$0
单词中的大写字母(例如 upperCASe => uPPERCASE)
查找:(\w)([A-Z]+)
替换:$1\U$2
上一个大写(例如,大写 => 大写)
查找:(\w+)([A-Z])
替换:\U$1$2
前一个小写(例如 LOWERCase => lowerCase)
查找:(\w+)([A-Z])
替换:\L$1$2
其余部分大写(例如 upperCase => upperCASE)
查找:([A-Z])(\w+)
替换:$1\U$2
其余部分小写(例如 LOWERCASE => lOwercase)
查找:([A-Z])(\w+)
替换:$1\L$2
Shift-right-uppercase(例如 Case => cAse => caSe => caseE)
查找:([a-z\s])([A-Z])(\w)
替换:$1\l$2\u$3
Shift-left-uppercase(例如,CasE => CaSe => CAse => Case)
查找:(\w)([A-Z])([a-z\s])
替换:\u$1\l$2$3
关于问题(匹配至少有一个大写和一个小写字母的单词并将它们变为小写),leemour's comment-answer 是正确答案。澄清一下,如果只有一组要替换,您可以在内部组中使用?:
(即non capture groups)或完全避免创建它们:
((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
或 ([a-z][A-Z]+|[A-Z]+[a-z])
替换:\L$1
2016-06-23 编辑
Tyler 通过编辑此答案建议 #4 的替代查找表达式:
(\B)([A-Z]+)
根据documentation,\B
将查找不在单词边界的字符(即不在开头也不在结尾)。您可以使用 全部替换 按钮,它的作用与使用 (\w)([A-Z]+)
作为查找表达式完全相同。
然而,\B
的缺点是它不允许单个替换,这可能是由于 find 的“非边界”限制(如果您知道确切原因,请进行编辑)。
【讨论】:
【参考方案4】:正则表达式
查找:\w+
替换:\L$0
Sublime Text 使用 Perl 兼容正则表达式 (PCRE) 来自 Boost 库的引擎,用于支持搜索中的正则表达式 面板。
\L
将所有内容转换为小写
$0
捕获组
【讨论】:
【参考方案5】:试试这个
查找:([A-Z])([A-Z]+)\b
替换:$1\L$2
确保启用区分大小写 (Alt + C)
【讨论】:
那行不通。它匹配 2+ 个大写字母。但我知道\L
是小写字母。我更新了问题。【参考方案6】:
在 BBEdit 中可以这样工作(例如:将 ID 值更改为小写):
搜索任意值:<a id="(?P<x>.*?)"></a>
替换为相同的小写:<a id="\L\P<x>\E"></a>
原为:<a id="VALUE"></a>
成为:<a id="value"></a>
【讨论】:
以上是关于用小写字母替换大写的主要内容,如果未能解决你的问题,请参考以下文章
shell 整理(26)===大小写字母替换和随机取出一个奇数