正则表达式 – Perl匹配同一行上的多个字符串(双引号和单引号内
发布时间:2020-12-14 05:50:47 所属栏目:百科 来源:网络整理
导读:我认为这应该很简单,在同一行上匹配双/单引号中的字符串 例如,跟随字符串全部在同一行 “你好”’世界”foo’“酒吧” 我有 print /(”.*?”)|(‘.*?’)/g; 但我得到了以下错误 在…的印刷中使用未初始化的价值 解决方法 以下将返回您提到的警告: use str
我认为这应该很简单,在同一行上匹配双/单引号中的字符串
例如,跟随字符串全部在同一行 “你好”’世界”foo’“酒吧” 我有 但我得到了以下错误 在…的印刷中使用未初始化的价值 解决方法
以下将返回您提到的警告:
use strict; use warnings; my $str = q{"hello" 'world' 'foo' "bar"}; print $str =~ /(".*?")|('.*?')/g; 这是因为您的正则表达式只匹配捕获组中的一个或另一个.另一个将不匹配,因此将返回undef. 以下将说明: while ($str =~ /(".*?")|('.*?')/g) { print "one = " . (defined $1 ? $1 : 'undef') . "n"; print "two = " . (defined $2 ? $2 : 'undef') . "n"; print "n"; } 输出: one = "hello" two = undef one = undef two = 'world' one = undef two = 'foo' one = "bar" two = undef 要获得所需的行为,只需将捕获组放在整个表达式周围即可. print $str =~ /(".*?"|'.*?')/g; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |