如何使用preg_match结合正则表达式提取价格符号前的文本?
正则提取尺寸文本解决方案
- 针对给定的文本行,要提取出“Medium Size”或“Small Size”,可以使用如下正则表达式:
/^\d+\.\s*(.+?)\s*[+-]/ - 正则说明:
^\d+\.:匹配开头的序号数字和点号\s*:匹配序号与尺寸之间的任意空格(包括0个)(.+?):非贪婪模式匹配尺寸文本,确保只取到+/-符号之前的内容\s*:匹配尺寸与符号之间的任意空格[+-]:以+或-作为结束标记,限定提取范围
- PHP代码示例:
// 处理第一行文本 $line1 = "1. Medium Size +CA $33.00"; preg_match('/^\d+\.\s*(.+?)\s*[+-]/', $line1, $match1); echo $match1[1]; // 输出:Medium Size // 处理第二行文本 $line2 = "2. Small Size -CA $4.00"; preg_match('/^\d+\.\s*(.+?)\s*[+-]/', $line2, $match2); echo $match2[1]; // 输出:Small Size - 之前尝试的正则问题分析:
(\S+)仅能匹配连续非空白字符,只能提取到单个单词(如“Medium”“Small”),无法获取完整的尺寸名称(\S+\s+)会匹配“Medium ”(带末尾空格),同样无法覆盖双单词的尺寸文本
内容的提问来源于stack exchange,提问作者Joshua Loo
相关产品推荐
相关产品推荐

