这是代码
my $regex = '^.*?"blocked"\s+:\s+true.*?"clientip"\s+:\s+"([^"]*)".*?"containsadverts" : false.*?"destdomain" :\s+"([^"]*).*?("username" :\s+{ ")?([^"]*)?.*$';
它的匹配有时具有的(相当大的)字符串:
"username" : { "John" : [ ] } }
有时没有。什么时候我需要获取4美元的名称(在这种情况下是约翰)。 我的想法是创建两个捕获组然后添加?在每一个结束时,使它们可选。
这导致:
Use of uninitialized value $3 in concatenation (.) or string at perl_regex.pl line 13.
当我在每次捕获结束时删除?
它将捕获变量ok,但当“username”不存在时正则表达式失败。我在想?
正在做一些我不太了解的事情?