我试图用正则表达式替换大写字母对应的小写字母。 因此,< / p >
EarTH: 1, MerCury: 0.2408467, venuS: 0.61519726,
就变成了
earth: 1, mercury: 0.2408467, venus: 0.61519726,
崇高的文本。我怎么能只在包含小写字母和大写字母的单词中小写字母?因此它影响venUs而不是VENUS。
venUs
VENUS
试试这个
([A-Z])([A-Z]+)\b
$1\L$2
确保打开区分大小写(Alt + C)
你可以:
(\w)
\L$1
或者选择文本ctrl+K+l。
我觉得这对其他人来说也很有用:
发现:
([A-Z])(.*)
替换:
\L$1$2
$1
$2
\l$1$2
对于大写的\U和\u也是如此
\U
\u
在使用像[A-Z]这样的正则表达式进行搜索之前,您应该按区分大小写的按钮(或Alt+C)(作为Leemour很好地建议道在接受的答案中进行编辑)。为了明确起见,我还留下了一些其他的例子:
[A-Z]
(\s)([a-z])
\s
$1\u$2
(\s)([A-Z])
$1\l$2
([a-z])([A-Z])
(\w)([A-Z]+)
\L$0
$1\U$2
(\w+)([A-Z])
\U$1$2
([A-Z])(\w+)
([a-z\s])([A-Z])(\w)
$1\l$2\u$3
(\w)([A-Z])([a-z\s])
\u$1\l$2$3
关于问题(匹配至少有一个大写字母和一个小写字母的单词并使它们小写),leemour的comment-answer是正确的答案。澄清一下,如果只有一个组需要替换,你可以只在内部组(即非捕获组)中使用?:,或者根本不创建它们:
?:
((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
([a-z][A-Z]+|[A-Z]+[a-z])
泰勒建议通过编辑此答案为#4的替代find表达式:
(\B)([A-Z]+)
根据文档, \B将查找不在单词边界(即不在开头也不在结尾)的字符。你可以使用替换所有按钮,它所做的事情与你使用(\w)([A-Z]+)作为find表达式完全相同。
\B
然而,\B的缺点是它不允许单个替换,可能是由于找到的“不边界”限制(如果你知道确切的原因,请编辑这个)。
正则表达式
找到: \w+
\w+
取代: \L$0
Sublime Text使用Perl兼容正则表达式(PCRE) Boost库中的引擎,为搜索中的正则表达式提供支持 面板。< / p >
\L将所有内容转换为小写
\L
$0捕获组
$0
在BBEdit的工作原理是这样的(例如:将ID值改为小写):
搜索任意值:<a id="(?P<x>.*?)"></a> 替换为相同的小写字母:<a id="\L\P<x>\E"></a>
<a id="(?P<x>.*?)"></a>
<a id="\L\P<x>\E"></a>
<a id="VALUE"></a>
<a id="value"></a>
(\u)
notepad++确认操作。 不要忘记检查&;Match case&;盒子。
转换带有一些以_开头的附加字段的snake_case单词:
_
snake_case
例子:
_id user_name
来
id userName
使用第一个:
然后,将"_"替换为""(空格)
"_"
""