正则表达式 – 括号如何更改正则表达式匹配的结果?
发布时间:2020-12-14 06:04:52 所属栏目:百科 来源:网络整理
导读:任何人都可以解释为以下两种语法之间的区别: ($x) = $a =~ /(d+)/;$y = $a =~ /(d+)/; 在示例中,如果$a = 100lkj则 $x = 100但$y = 1. 使用此代码,我试图提取$string中的数值. 我不明白为什么? 解决方法 在括号内写入变量时,会强制列出上下文.这意味着,
任何人都可以解释为以下两种语法之间的区别:
($x) = $a =~ /(d+)/; $y = $a =~ /(d+)/; 在示例中,如果$a = 100lkj则 使用此代码,我试图提取$string中的数值. 我不明白为什么? 解决方法
在括号内写入变量时,会强制列出上下文.这意味着,您要分配给该变量的内容也将被解释为列表.
在您的情况下,您有一个正常的匹配.匹配的返回值是一个列表,包含所有匹配项.如果将列表强制转换为标量上下文,则返回此列表中的条目数.所以你有1个匹配,这意味着这个列表包含1个匹配. 不建议使用正则表达式的返回值. 您可以使用变量$1,$2,$3,…作为匹配项(括号中的匹配项). 在你的情况下: $a =~ /(d+)/; $x = $1; BTW:$a和$b是排序的特殊变量.请不要使用它们:). ($x) = $a =~ /(d+)/; # $x is the first element of the RegEx return value # ($x,$y,$z) = $a =~ /(d)(d)(d)/; # $x = first match,$y = second and so on. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |