正则表达式 - 可选值

时间:2011-03-18 01:48:04

标签: regex

preg_match_all('/<p class="row">(.+?)<\/span>(.+?)- <a href="(.+?)">(.+?)<\/a>(.+?)<font size="-1"> \((.+?)\)<\/font>(.+?)<\/p>/is', $HTML, $matches);

我有以下正则表达式,问题是该部分有时只会显示出来。我的正则表达式要求字体在那里,我怎样才能使它成为可选字段?

不仅mkae它是可选的,而且如果它存在则拉取值

2 个答案:

答案 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>)?