正则表达式用小写字母替换大写

lee*_*our 188 sublimetext sublimetext2 sublimetext3

我正在尝试使用正则表达式将大写字母替换为相应的小写字母.以便

EarTH:   1,
MerCury: 0.2408467,
venuS:   0.61519726,
Run Code Online (Sandbox Code Playgroud)

earth:   1,
mercury: 0.2408467,
venus:   0.61519726,
Run Code Online (Sandbox Code Playgroud)

在Sublime Text中.如何只在包含小写和大写字母的单词中包含字母?这样它影响venUs而不影响VENUS.

Ale*_* K. 337

你可以:

查找:(\w) 替换为:\L$1

或者选择文字ctrl+ K+ L.

  • Sublime使用Boost作为其RegEx支持,这些是格式字符串的文档,如\ L:http://www.boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/format/perl_format. HTML (11认同)
  • 要仅小写单个参数,请在其后面添加 \E 以结束小写部分: `$1\L$2\E$3` (7认同)
  • 注意:要转到大写,您需要`\ U` (6认同)
  • 而在IntelliJ中 (4认同)
  • 如果有人在这里使用 VS Code,`\L$1` 也可以在那里工作! (3认同)
  • 要降低单个字母,您还可以使用小写“L”“\l$1”而不是“\L$1\E” (3认同)
  • 超。很有用。您能否指向一些列出像'\ L'这样的转换的资源? (2认同)
  • 请注意,.NET Regex 类不支持 \L、\U、\E 等替换标签。 (2认同)

dGo*_*dGo 118

我认为这对其他人来说也可能派上用场:

找:

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

更换:

  • \L$1$2- >将所有字母转换成$1$2为小写
    BUT
  • \l$1$2- >只会将第一个字母转换$1为小写,并保留其他所有内容

对于带有\U和的大写字母也是如此\u

  • 在这种情况下,`\ l $ 1 $ 2`只会使整个`$ 1`小写,因为`$ i`只包含一个字母.`\ l` =>首先写下小写字母,然后``u` =>首先写入大写字母.`\ U`和`\ I`在以下所有字母中执行此操作. (7认同)
  • 注意,“ \ E”终止了“ \ L”或“ \ U”序列。 (3认同)

Arm*_*oot 76

在使用正则表达式搜索之前[A-Z],您应该按下区分大小写的按钮(或Alt+ C)(因为lemyour建议在接受的答案中进行编辑).为了清楚起见,我要留下一些其他的例子:

  1. 大写单词
    • 发现:(\s)([a-z])(\s也匹配新行,即,"金星" =>"金星")
    • 更换: $1\u$2
  2. 没有资本的话
    • 找: (\s)([A-Z])
    • 更换: $1\l$2
  3. 去除驼峰病例(例如cAmelCAse => camelcAse => camelcase)
    • 找: ([a-z])([A-Z])
    • 更换: $1\l$2
  4. 单词中的小写字母(例如LowerCASe => Lowercase)
    • 找: (\w)([A-Z]+)
    • 更换: $1\L$2
    • 替代替换: \L$0
  5. 单词中的大写字母(例如upperCASe => uPPERCASE)
    • 找: (\w)([A-Z]+)
    • 更换: $1\U$2
  6. 大写之前(例如upperCase => UPPERCase)
    • 找: (\w+)([A-Z])
    • 更换: \U$1$2
  7. 小写以前(例如LOWERCase => lowerCase)
    • 找: (\w+)([A-Z])
    • 更换: \L$1$2
  8. 大写其余部分(例如upperCase => upperCASE)
    • 找: ([A-Z])(\w+)
    • 更换: $1\U$2
  9. 小写其余部分(例如lOWERCASE => lOwercase)
    • 找: ([A-Z])(\w+)
    • 更换: $1\L$2
  10. Shift-right-uppercase(例如Case => cAse => caSe => casE)
    • 找: ([a-z\s])([A-Z])(\w)
    • 更换: $1\l$2\u$3
  11. Shift-left-uppercase(例如CasE => CaSe => CAse => Case)
    • 找: (\w)([A-Z])([a-z\s])
    • 更换: \u$1\l$2$3

关于问题(匹配至少有一个大写和一个小写字母的单词,并使它们小写),leemour的评论答案正确的答案.只是为了澄清,如果只有一个组可以替换,你可以只使用?:内部组(即非捕获组)或完全避免创建它们:

  • 发现:((?:[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]+)

根据文档,\B将查找不在单词边界的字符(即不在开头而不是在结尾).您可以使用" 全部替换"按钮,它与完成相同的操作就像(\w)([A-Z]+)查找表达式一样.

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


Max*_* Ta 5

  • 寻找: (\u)
  • 代替: \L$1$2

在Notepad++中确认操作。
不要忘记选中“匹配案例”框。