preg_match_all('/<p class="row">(.+?)<\/span>(.+?)- <a href="(.+?)">(.+?)<\/a>(.+?)<font size="-1"> \((.+?)\)<\/font>(.+?)<\/p>/is', $HTML, $matches);
我有以下正则表达式,问题是该部分有时只会显示出来。我的正则表达式要求字体在那里,我怎样才能使它成为可选字段?
不仅mkae它是可选的,而且如果它存在则拉取值
答案 0 :(得分:1)
这对我有用:
(?:<font size="-1">(.+?)<\/font>)?
进一步的例子:
% perl -e '$x = "ab<font size=\"-1\">foo</font>"; print "$1 $2" if $x =~ /(ab)(?:<font size="-1">(.+?)<\/font>)?/'
ab foo
% perl -e '$x = "ab<font size=\"-1\">foo</fontXXXXXXX>"; print "$1 $2" if $x =~ /(ab)(?:<font size="-1">(.+?)<\/font>)?/'
ab
答案 1 :(得分:0)
您可以将字体选为:
(<\/font>)?