使用PCRE正则匹配HTML:先匹配固定值再捕获可变内容如何实现?
符合需求的PCRE正则
/Match-Me-First.*?<span[^>]*>([^<]+)<\/span>/s
规则说明
- 开头直接匹配固定文本
Match-Me-First,确认第一个目标区块存在 .*?为非贪婪匹配,配合末尾的s修饰符,可匹配两个区块之间的所有内容(包括换行)<span[^>]*>匹配第二个区块中包裹动态值的span起始标签,自动忽略标签内的所有属性([^<]+)为捕获组1,会提取span标签内的所有非<字符,也就是你需要的动态内容<\/span>匹配span闭合标签,锚定匹配结束边界,避免提取内容溢出
更高精度的优化版本
如果两个区块之间存在其他干扰性的span标签,可以额外锚定第二个td块的特征,匹配准确性更高:
/Match-Me-First.*?<td width="500".*?<span[^>]*>([^<]+)<\/span>/s
使用要求
必须开启PCRE的s(单行)修饰符,否则.无法识别换行符,会导致跨区块匹配失败。
内容的提问来源于stack exchange,提问作者glwallum
相关产品推荐
相关产品推荐

