我试图用正则表达式将大写字母替换为对应的小写字母。 这

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

就变成了

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

崇高的文本。我怎么能只在包含小写字母和大写字母的单词中小写字母?所以它影响金星而不是金星。


当前回答

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

发现:

([a - z])(*)。

替换:

\L$1$2—>将$1和$2中的所有字母转换为小写字母 但 \l$1$2—>将只将$1的第一个字母转换为小写字母,其他的都保持不变

大写的\U和\U也是一样

其他回答

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

搜索任意值:<a id="(?P<x>.*?)" > < / > <a id="\L\P<x>\E"></a>

<a id="VALUE"></a> 变成:<a id="value"></a>

发现:(\ u) 替换:\ L $ 1 $ 2

在notepad++中确认操作。 别忘了勾选“火柴盒”。

转换带有_开头字段的snake_case单词:

例子:

_id
user_name

to

id
userName

使用第一个:

发现:(\ w) _ (\ w) 替换:$ 1 \ U 2美元

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

正则表达式

查找:\w+

替换:\ L $ 0

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

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

$0捕获组

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

Capitalize words Find: (\s)([a-z]) (\s also matches new lines, i.e. "venuS" => "VenuS") Replace: $1\u$2 Uncapitalize words Find: (\s)([A-Z]) Replace: $1\l$2 Remove camel case (e.g. cAmelCAse => camelcAse => camelcase) Find: ([a-z])([A-Z]) Replace: $1\l$2 Lowercase letters within words (e.g. LowerCASe => Lowercase) Find: (\w)([A-Z]+) Replace: $1\L$2 Alternate Replace: \L$0 Uppercase letters within words (e.g. upperCASe => uPPERCASE) Find: (\w)([A-Z]+) Replace: $1\U$2 Uppercase previous (e.g. upperCase => UPPERCase) Find: (\w+)([A-Z]) Replace: \U$1$2 Lowercase previous (e.g. LOWERCase => lowerCase) Find: (\w+)([A-Z]) Replace: \L$1$2 Uppercase the rest (e.g. upperCase => upperCASE) Find: ([A-Z])(\w+) Replace: $1\U$2 Lowercase the rest (e.g. lOWERCASE => lOwercase) Find: ([A-Z])(\w+) Replace: $1\L$2 Shift-right-uppercase (e.g. Case => cAse => caSe => casE) Find: ([a-z\s])([A-Z])(\w) Replace: $1\l$2\u$3 Shift-left-uppercase (e.g. CasE => CaSe => CAse => Case) Find: (\w)([A-Z])([a-z\s]) Replace: \u$1\l$2$3

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

发现:((?):[a - z] [a - z] +) | (?: [a - z] + [a - z]))或([a - z] [a - z] + | [a - z] + [a - z]) 替换:\ L 1美元

2016-06-23编辑

Tyler建议通过编辑这个答案来替换第4个find表达式:

(\ B) ([a - z] +)

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

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