0

给定以下文本格式,如何在括号之间获取“用户编号”值?格式相同,但括号内的值因文件而异。

User name [michael]
User age [25]
User number [2432]
User city [Memphis]
4

2 回答 2

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 除非字符串匹配)。

于 2012-10-04T07:06:27.680 回答
0

要仅检索用户编号,您可以这样做:

/User number \[(\d*)\]/

现在该数字将在第一个捕获组(由括号定义())中找到。[转义and很重要,]因为它们是正则表达式中的特殊字符,表示字符类。

于 2012-10-03T21:26:18.260 回答