我正在尝试使用正则表达式将大写字母替换为相应的小写字母。 那么
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
变为
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
在Sublime Text中。如何只在包含小写和大写字母的单词中包含字母?因此它影响venUs
而非VENUS
。
答案 0 :(得分:305)
你可以:
查找:(\w)
替换为:\L$1
或选择文字, ctrl + K + L 。
答案 1 :(得分:104)
我认为这对其他人来说也可能派上用场了:
找到:
([A-Z])(.*)
取代:
\L$1$2
- >会将$1
和$2
中的所有字母转换为小写字母
的 BUT 强> \l$1$2
- >只会将$1
的第一个字母转换为小写,并将其他所有内容保留为 \U
和\u
答案 2 :(得分:72)
在使用[A-Z]
这样的正则表达式进行搜索之前,您应按区分大小写的按钮(或 Alt + C )(如要在接受的答案中编辑leemour nicely suggested)。为了清楚起见,我要留下一些其他的例子:
(\s)([a-z])
(\s
也匹配新行,即“venuS”=>“VenuS”)$1\u$2
(\s)([A-Z])
$1\l$2
([a-z])([A-Z])
$1\l$2
(\w)([A-Z]+)
$1\L$2
\L$0
(\w)([A-Z]+)
$1\U$2
(\w+)([A-Z])
\U$1$2
(\w+)([A-Z])
\L$1$2
([A-Z])(\w+)
$1\U$2
([A-Z])(\w+)
$1\L$2
([a-z\s])([A-Z])(\w)
$1\l$2\u$3
(\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
Tyler通过编辑此答案建议#4的替代查找表达式:
(\B)([A-Z]+)
根据documentation,\B
将查找不在单词边界的字符(即不在开头而不是在结尾)。您可以使用全部替换按钮,它就像使用(\w)([A-Z]+)
作为查找表达式一样。
然而,\B
的缺点是它不允许单个替换,可能是由于查找的“非边界”限制(如果你知道,请编辑这个)确切的原因)。
答案 3 :(得分:2)
正则表达式
<强>查找强>:\w+
<强>替换强>:\L$0
Sublime Text使用Perl兼容正则表达式(PCRE) 来自Boost库的引擎为搜索中的正则表达式提供动力 面板。
\L
将所有内容转换为小写
$0
捕获群组
答案 4 :(得分:1)
在BBEdit中可以做到这一点(例如:将ID值更改为小写):
搜索任何值:<a id="(?P<x>.*?)"></a>
用小写字母替换:<a id="\L\P<x>\E"></a>
原是:<a id="VALUE"></a>
成为:<a id="value"></a>
答案 5 :(得分:0)
试试这个
([A-Z])([A-Z]+)\b
$1\L$2
确保区分大小写(Alt + C)