我正在尝试使用正则表达式将大写字母替换为相应的小写字母。 这样
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
成为
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
在 Sublime Text 中。如何仅在同时包含小写和大写字母的单词中小写字母?这样它会影响
venUs
而不是 VENUS
。
您可以:
找到:
(\w)
替换为:\L$1
或选择文本,ctrl+K+L。
我认为这对其他人来说也可能派上用场:
找到:
([A-Z])(.*)
替换:
\L$1$2
--> 将 $1
和 $2
中的所有字母转换为小写\l$1$2
--> 只会将 $1
的第一个字母转换为小写,其他所有内容保持原样对于大写字母
\U
和 \u
也是如此
在使用像
[A-Z]
这样的正则表达式进行搜索之前,您应该按区分大小写的按钮(或Alt+C)(正如leemour很好地建议在接受的答案中进行编辑)。为了清楚起见,我留下了一些其他例子:
(\s)([a-z])
(\s
也匹配新行,即“venuS”=>“VenuS”)$1\u$2
(\s)([A-Z])
$1\l$2
([a-z])([A-Z])
$1\l$2
(\w)([A-Z]+)
$1\L$2
\L$0
(\w)([A-Z]+)
$1\U$2
(\w+)([A-Z])
\U$1$2
(\w+)([A-Z])
\L$1$2
([A-Z])(\w+)
$1\U$2
([A-Z])(\w+)
$1\L$2
([a-z\s])([A-Z])(\w)
$1\l$2\u$3
(\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
Tyler 建议通过编辑此答案来替代 #4 的查找表达式:
(\B)([A-Z]+)
根据文档,
\B
将查找不在单词边界的字符(即不在开头和结尾)。您可以使用 Replace All 按钮,它的作用与使用 (\w)([A-Z]+)
作为查找表达式完全相同。
但是,
\B
的缺点是它不允许单个替换,这可能是由于find的“非边界”限制(如果您知道确切原因,请编辑此内容)。
要结束更改字母大小写,请使用
\E
$1\L$2\E$3
(例如(ABC)(ABC)(ABC)
=> ABCabcABC
)(\u)
\L$1$2
在Notepad++中确认操作。
不要忘记选中“匹配案例”框。
试试这个
([A-Z])([A-Z]+)\b
$1\L$2
确保区分大小写已开启(Alt + C)
正则表达式
查找:
\w+
更换:
\L$0
Sublime Text 使用 Perl 兼容正则表达式 (PCRE) Boost 库中的引擎为搜索中的正则表达式提供支持 面板。
\L
将所有内容转换为小写
$0
捕获群组
在 BBEdit 中可以这样工作(例如:将 ID 值更改为小写):
搜索任意值:
<a id="(?P<x>.*?)"></a>
替换为相同的小写字母:<a id="\L\P<x>\E"></a>
曾经:
<a id="VALUE"></a>
变成:<a id="value"></a>
要转换
snake_case
单词以及一些以 _
开头的附加字段:
示例:
_id
user_name
到
id
userName
先使用:
然后,只需将
"_"
替换为 ""
(空格)
splitText = re.sub(r'[^\w\s]', lambda x: x.group() + '*', text).split('* ')
return splitText.replace('*', '')
这使用正则表达式 (
import re
),然后删除剩余的星号。如果只需要使用句尾问号,请将 r'[^\w\s]'
替换为 r'[.?!]'