社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Aggragoth

Aggragoth 最近创建的主题
Aggragoth 最近回复了

我会尽量用外行的话来解释这个解决方案。

所以首先, re.sub() 搜索指定模式的出现 '[_-](.)' 它将匹配连字符所在的任何子字符串 '-' 或下划线 '_' 就在另一个角色之前。这个 回复:sub() 函数然后分别通过匿名函数(lambda函数)运行这些匹配。

python中的Regex分组本质上涉及那些大括号 () 收集子表达式以供以后在程序中使用。lambda函数将接收一些从搜索中生成的regex对象 text 对于提供的模式,然后返回 x.group(1).upper() ,我们可以从正则表达式中看到,分组元素是连字符或下划线后面的单个字符,这是函数返回和替换的内容。

现在,回答你的要点:

为什么不 [_-](\w+) 工作? 这是因为,当它找到一个hypen时,它会选择它后面的所有字母数字字符,因此它会将下一个单词的整个大写。

他是如何用sub去掉连字符和下划线的? 这很容易回答。这个 回复:sub() 函数替换整个匹配项,而不仅仅是分组元素,在lambda中,他只返回大写的分组元素,而不返回连字符。

成功地将每个单词的第一个字符大写(除了第一个单词)? 当搜索regex模式时,它将查找 立即进行 连字符或下划线,并且第一个单词之前不包含这两个字符中的任何一个。如果你给这个函数提供 '-hello-there' 它将产生: 'HelloThere'

我以为x.group(1).upper()会将整个单词大写,为什么group(1)指的是第一个字符? 这取决于模式,因为模式是 '[_-](.)' 而不是 '[_-](.+)' ,它只匹配一个字符

我希望这对你有所帮助