gpt4 book ai didi

regex - Perl 一行代码将第一个字符转换为大写 - 逻辑理解

转载 作者:行者123 更新时间:2023-12-02 01:51:54 26 4
gpt4 key购买 nike

在下面的Perl命令行中,尝试将第一个和第二个字符转为大写

echo pet | perl -pe 's/^(.{0})(.)/$1\U$2/'    # Ans: Pet
echo pet | perl -pe 's/^(.{1})(.)/$1\U$2/' # Ans: pEt

但无法理解语法 (.{0})(.)(.{1})(.)

你能解释一下它是如何工作的吗?

但是,我发现可以通过下面的语法简单地实现上面的内容:

echo pet | perl -pe 's/(\w)/\U$1\E/'   # Ans: Pet
echo pet | perl -pe 's/(\w)(\w)/$1\U$2/' # Ans: pEt

放在\U\E之间的反向引用将被转换为大写

最佳答案

两者的区别:

echo pet | perl -pe 's/^(.{0})(.)/$1\U$2/'    # Ans: Pet
echo pet | perl -pe 's/^(.{1})(.)/$1\U$2/' # Ans: pEt

是第一种情况下第一个捕获组没有匹配到,而第二种情况下第一个捕获组中捕获了p

第一种情况的一个较短的等价物是:

$ echo pet | perl -pe 's/^(.)/\U$1/'
Pet

此外,以下内容应予以澄清:

$ echo pet | perl -pe 's/^(.{0})(.)/$1\U$2$2/'
PPet

(第二个反向引用打印了两次,产生了 2 个 P。)

关于regex - Perl 一行代码将第一个字符转换为大写 - 逻辑理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22222074/

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