在正则中进行判断(三目运算)

<href="fdsafd" target="_blank" class="t" >fjdafdak</a>
<href="xxfdsafd" title="abcde" target="_blank" class="t" >fjaddk</a>
<href="yyfdsafd" target="_blank" class="t" >fjafdk</a>
<href="zzfdsafd" target="_blank" class="t" >fjaddddk</a>

朋友需要提取形如以上内容中的url和title,且取title时须判断<a>标签中是否存在title属性,如果存在,则匹配title属性的值,否则匹配<a></a>之间的值作为title。

通过三目运算,可以很方便解决上面的需求。

 三目表达式  (?(expression)yes|no)

说明:如果expression被搜索到就执行yes部分,否则就执行no部分。

编写正则如下:

<a href="(?<url>[^"]*?)" (?(title="[^"]*?"[^<>]*>[\s\S]*?)title="(?<title>[^"]*?)"[^<>]*>[\s\S]*?|[^<>]*>(?<title>[\s\S]*?))</[^<>]*>

经过正则表达式测试工具测试,提取成功。

原文地址:https://www.cnblogs.com/ztotem/p/1315936.html