正则使用记录

目标字符串

<td width="50%"> 
<p style="text-align:left"><span style="font-family:'Times New Roman'">A.span>Blended schoolsspan>p>
td>
<td width="50%">
<p style="text-align:left;"><span style="font-family:'Times New Roman'">B.span>span>p>
td>
<td width="50%">
<p style="text-align:left;"><span style="font-family:'Times New Roman'">C.span>International schools.span>p>
td>

匹配HTML中,没有被span标签完全包裹的字符串,把span标签补充完整 。
上面html实际没有换行符,添加换行符为方便观察

正则表达式为

([^>]*>[^>]*>[A-H]\.<\/span>)(.+?)(<\/span>)

匹配结果如下
正则使用记录_第1张图片

结果第二组匹配出现异常,([\s\S]+?)在没有目标字符串的情况下,强行往后匹配了,越过了第一个,一致匹配到第二个才结束

我们修改正则表达式为

(<p[^>]*><span[^>]*>[A-H]\.<\/span>)(.*?)(<\/span>)

匹配结果如下
正则使用记录_第2张图片

我们看到,匹配结果正确。
反回了我们想要的结果,
替换字符串

$str = 'html代码';
$str = preg_match('/(]*>]*>[A-H]\.<\/span>)(.+?)(<\/span>)/','\1\2\3',$str);

你可能感兴趣的:(软件工具,正则表达式)