提问人:CJB 提问时间:10/20/2023 最后编辑:Wiktor StribiżewCJB 更新时间:10/25/2023 访问量:77
如何取消字符串的 CamelCase 部分?
How To Un-CamelCase Part Of A String?
问:
我有一长串 Markdown 图像列表,例如:
我想取消 CamelCase 标题而不是文件名
以获得此结果:
我正在使用:
(?<=[a-z])(?=[A-Z])
我得到

如何将此正则表达式限制为方括号中的内容并保持文件名不变?
答:
0赞
Wiktor Stribiżew
10/23/2023
#1
Vim 解决方案可以是这样的
%s/\v(!\[[^][]*[a-z])@<=([A-Z][^][]*])@=/ /g
请参阅 .NET 等效正则表达式演示。我正在使用 .NET 选项,因为 Vim 和 .NET 正则表达式都支持后视断言中的可变宽度模式。
图案细节:
\v
- 非常神奇的模式(!\[[^][]*[a-z])@<=
- 紧跟在前面的位置!\[[^][]*[a-z]
- 一个子字符串,然后![
[^][]*
- 零个或多个字符,而不是 和 字符[
]
[a-z]
- 小写 ASCII 字母
([A-Z][^][]*])@=
- 紧随其后的位置[A-Z]
- 大写 ASCII 字母[^][]*
- 除 和 之外的零个或多个字符[
]
]
- 和一个字符。]
评论
&1 &2