Regex 如何使用正则表达式将下划线转换为驼峰大小写?

Regex 如何使用正则表达式将下划线转换为驼峰大小写?,regex,pcre,camelcasing,case-conversion,Regex,Pcre,Camelcasing,Case Conversion,如何使用singleJava/Perl正则表达式搜索和替换将带下划线的名称转换为驼峰大小写名称,如下所示 underscore_variable_name -> underscoreVariableName UNDERSCORE_VARIABLE_NAME -> underscoreVariableName _LEADING_UNDERSCORE -> leadingUnderscore 我要求使用一个正则表达式的原因是我想使用Eclipse或Notepad++搜索和替换来实

如何使用singleJava/Perl正则表达式搜索和替换将带下划线的名称转换为驼峰大小写名称,如下所示

underscore_variable_name -> underscoreVariableName
UNDERSCORE_VARIABLE_NAME -> underscoreVariableName
_LEADING_UNDERSCORE -> leadingUnderscore
我要求使用一个正则表达式的原因是我想使用Eclipse或Notepad++搜索和替换来实现这一点。

:


如果字符串中已经有camelCase变量,那么@Qtax的答案将使它们变为小写。如果所有变量都是小写字母,则可以对#3进行以下修改:
W
-->
A-Z

's/(?<=[^\A-Z_])_+([^\A-Z_])|([^\A-Z_]+)|_+/\U$1\L$2/g'

's/(?大写字母后接——

s/[_-]([a-z])/\u$1/gr

我更喜欢user846969的答案,但不知何故,它没有在使用EBNF(extended Backus Naur form)的工具中找到其他匹配项

/(?:([a-z0-9]*)[-])([a-z])/${1}${2:/upcase}/g

+1:Neat.唯一可能的诡辩是,
\u tea\u break
将变成
TeaBreak
,而不是
TeaBreak
\u TeaBreak
。但是,如果有人使用以下划线开头的名字,那就对了。@JonathanLeffler,你是对的,如果多个连续的名字都不正确,也会有问题使用了derscores。更新了答案以修复此问题。谢谢,但因为这是在编辑器搜索和替换对话框中使用的,所以我要求使用单个正则表达式来执行此操作。
$\uLc
打破了此限制。你能想一种方法将它们组合起来吗?@glenviewjeff,
lc
less解决方案对
var\x这样的名称不起作用_简短的
,现已更新和修复。非常感谢您的回答。在我的书中,您站在耶稣旁边。
's/(?<=[^\A-Z_])_+([^\A-Z_])|([^\A-Z_]+)|_+/\U$1\L$2/g'
s/[_-]([a-z])/\u$1/gr