gpt4 book ai didi

regex - 我认为这段代码找到了字符串长度。这里到底发生了什么?

转载 作者:行者123 更新时间:2023-12-02 06:46:59 24 4
gpt4 key购买 nike

我的任务是将一些代码从 Perl 转换为 Python,我遇到了这段让我感到困惑的代码:

my $length = map $_, $root =~ /(.)/gs;

根据变量名和测试,我确定它获取字符串的长度,但这似乎是一种非常奇怪且难以理解的方法。为什么有人会使用它而不是 length($root) 或可怕的 $root =~ y///c,如 this post 中所述,有什么理由吗? ?我想确保我没有错过一些基于我不知道的奇怪 Perl 行为的功能。

最佳答案

在列表上下文中,带有/g 修饰符的 m//运算符返回所有捕获的列表,在本例中是字符串中的每个字符。该映射是一个空操作,但在标量上下文中返回它生成的列表中的元素数,因此结果是字符串中的字符数。 m//运算符在标量上下文中的工作方式不同,因此需要这个中间步骤。一个类似的成语是:

my $length = () = $root =~ /(.)/gs;

这通常用于更复杂的匹配计数,因为 length函数非常合适并且效率更高。

关于regex - 我认为这段代码找到了字符串长度。这里到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56976630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com