用小写字母代替大写字母

我试图用正则表达式替换大写字母对应的小写字母。 因此,< / p >

EarTH:   1,
MerCury: 0.2408467,
venuS:   0.61519726,

就变成了

earth:   1,
mercury: 0.2408467,
venus:   0.61519726,

崇高的文本。我怎么能只在包含小写字母和大写字母的单词中小写字母?因此它影响venUs而不是VENUS

250140 次浏览

试试这个

  • 发现:([A-Z])([A-Z]+)\b
  • 替换:$1\L$2

确保打开区分大小写(Alt + C)

你可以:

< p >发现:(\w) 替换为:\L$1

或者选择文本ctrl+K+l

我觉得这对其他人来说也很有用:

发现:

  • ([A-Z])(.*)

替换:

  • \L$1$2——>将把$1$2中的所有字母转换为小写
    但< / >强
  • \l$1$2——>只会将$1的第一个字母转换为小写字母,其他的都保持原样

对于大写的\U\u也是如此

在使用像[A-Z]这样的正则表达式进行搜索之前,您应该按区分大小写的按钮(或Alt+C)(作为Leemour很好地建议道在接受的答案中进行编辑)。为了明确起见,我还留下了一些其他的例子:

  1. < >强利用的话
    • 查找:(\s)([a-z]) (\s也匹配新行,即“金星”=>“金星”)
    • 替换:$1\u$2
    • 李< / ul > < / >
    • < >强Uncapitalize的话
      • 发现:(\s)([A-Z])
      • 替换:$1\l$2
      • 李< / ul > < / >
      • 移除驼峰情况 .(例如:cAmelCAse => cAmelCAse => cAmelCAse)
        • 发现:([a-z])([A-Z])
        • 替换:$1\l$2
        • 李< / ul > < / >
        • 单词中的小写字母(例如:小写=>小写)
          • 发现:(\w)([A-Z]+)
          • 替换:$1\L$2
          • 替换:\L$0
          • 李< / ul > < / >
          • 单词中的大写字母(例如:upperCASe => upperCASe)
            • 发现:(\w)([A-Z]+)
            • 替换:$1\U$2
            • 李< / ul > < / >
            • 大写字母前(例如:upperCase => upperCase)
              • 发现:(\w+)([A-Z])
              • 替换:\U$1$2
              • 李< / ul > < / >
              • 小写字母前(例如:小写=>小写)
                • 发现:(\w+)([A-Z])
                • 替换:\L$1$2
                • 李< / ul > < / >
                • 其余的大写(例如:upperCase => upperCase)
                  • 发现:([A-Z])(\w+)
                  • 替换:$1\U$2
                  • 李< / ul > < / >
                  • 小写其余部分(例如:小写=>小写)
                    • 发现:([A-Z])(\w+)
                    • 替换:$1\L$2
                    • 李< / ul > < / >
                    • Shift-right-uppercase(例如Case => Case => Case => Case)
                      • 发现:([a-z\s])([A-Z])(\w)
                      • 替换:$1\l$2\u$3
                      • 李< / ul > < / >
                      • Shift-left-uppercase(例如CasE => CasE => CasE => CasE)
                        • 发现:(\w)([A-Z])([a-z\s])
                        • 替换:\u$1\l$2$3
                        • 李< / ul > < / >

关于问题(匹配至少有一个大写字母和一个小写字母的单词并使它们小写),leemour的comment-answer正确的答案。澄清一下,如果只有一个组需要替换,你可以只在内部组(即非捕获组)中使用?:,或者根本不创建它们:

  • 找到:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))([a-z][A-Z]+|[A-Z]+[a-z])
  • 替换:\L$1

2016-06-23编辑

泰勒建议通过编辑此答案为#4的替代find表达式:

  • (\B)([A-Z]+)

根据文档\B将查找不在单词边界(即不在开头也不在结尾)的字符。你可以使用替换所有按钮,它所做的事情与你使用(\w)([A-Z]+)作为find表达式完全相同。

然而,\B的缺点是它不允许单个替换,可能是由于找到的“不边界”限制(如果你知道确切的原因,请编辑这个)。

正则表达式

找到: \w+

取代: \L$0

Sublime Text使用Perl兼容正则表达式(PCRE) Boost库中的引擎,为搜索中的正则表达式提供支持 面板。< / p >

\L将所有内容转换为小写

$0捕获组

在BBEdit的工作原理是这样的(例如:将ID值改为小写):

搜索任意值:<a id="(?P<x>.*?)"></a> 替换为相同的小写字母:<a id="\L\P<x>\E"></a>

< p >是:<a id="VALUE"></a> 变成:<a id="value"></a> < / p >
  • 发现: (\u)
  • 替换: \L$1$2

notepad++确认操作。
不要忘记检查&;Match case&;盒子。

转换带有一些以_开头的附加字段的snake_case单词:

例子:

_id
user_name

id
userName

使用第一个:

  • 找到 (\ w): _ (\ w)
  • 取代: $ 1 \ U 2美元

然后,将"_"替换为""(空格)