gpt4 book ai didi

regex - Perl 正则表达式中的括号有什么作用?

转载 作者:行者123 更新时间:2023-12-01 01:35:21 25 4
gpt4 key购买 nike

我一直在替换运算符中尝试几个正则表达式:

$str =~ s/^0+(.)/$1/;

将 0000 转换为 0 并将 0001 转换为 1
$str =~ s/^0+./$1/;

将 0000 转换为空字符串,将 000100 转换为 00,将 0001100 转换为 100。

括号有什么区别?

最佳答案

这对我来说似乎有点误用 - 您需要 () 来确定您的匹配项。

http://perldoc.perl.org/perlre.html

Capture buffers

The bracketing construct ( ... ) creates capture buffers. To refer to the current contents of a buffer later on, within the same pattern, use \1 for the first, \2 for the second, and so on. Outside the match use "$" instead of "\". (The \ notation works in certain circumstances outside the match. See the warning below about \1 vs $1 for details.) Referring back to another part of the match is called a backreference.



所以基本上你可以使用
if ($str =~ /^0+(.)/) { print "matched $1"; }

如果您有多个分组比赛,它们将是 1 美元、2 美元、3 美元...等,例如
if ($str =~ /(0*)(1*)/) { print "I've got $1 and $2"; }

关于regex - Perl 正则表达式中的括号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437361/

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