根据以下文本格式,如何在括号之间获取“用户编号”值?格式相同,但括号内的值会因文件而异。
User name [michael]
User age [25]
User number [2432]
User city [Memphis]
答案 0 :(得分:1)
解决方案1:
my ($number) = $file_as_string =~ /User number \[(\d+)\]/;
正则表达式匹配仅在列表上下文中返回捕获的值(这就是为什么my (...)
而不仅仅是my ...
)
解决方案2:
my $number;
$file_as_string =~ /User number \[(\d+)\]/
and $number = $1;
它还会保存特殊变量$ 1,$ 2等等,但要小心:如果匹配不成功,早期成功匹配的剩余$ 1值可能潜入您的变量(因此and
- $ number将除非字符串匹配,否则为undef)。
答案 1 :(得分:0)
要仅检索用户编号,您可以执行以下操作:
/User number \[(\d*)\]/
现在,数字将在第一个捕获组中找到(由parens ()
定义)。逃避[
和]
非常重要,因为它们是正则表达式中的特殊字符,表示字符类。