【发布时间】:2019-04-15 02:15:44
【问题描述】:
给定一个文件包括:
const users = [
{
name: 'Jeff',
age: 52,
gender: 'male'
},
{
name: 'Andy',
age: 25,
gender: 'male'
},
{
name: 'Sarah',
age: 30,
gender: 'female'
},
{
name: 'Phoebe',
age: 21,
gender: 'female'
},
{
name: 'Doris',
age: 81,
gender: 'female'
}
];
我正在尝试匹配“年龄与性别是男性”,但我不知道为什么我的代码不能匹配这个。但它适用于“https://regex101.com/r/cO8lqs/24”
while ($line = <FILE>){
if($line =~ /age:(.*)\,\s*gender: 'male'\}/g){
print "$1\n"; #output display number only
print "$line\n";
}
}
应该像这样匹配:
age: 52,
gender: 'male'
age: 25,
gender: 'male'
【问题讨论】:
-
<>默认情况下一次读取一行,看起来您希望它读取多个。 -
鉴于您的数据结构,进行一些格式化可能会更容易(例如
s/^.*?=\s*//删除const users =(根据您的文件进行调整...))并使用JSON 模块而不是使用正则表达式。
标签: perl