* 表示前面的字符可以出现0次或多次[^>]* 匹配任意数量的非">"字符\s* 匹配0个或多个空白字符(空格、制表符、换行符等)# 捕获组(.*?)() 捕获组,将匹配的内容保存起来. 匹配任意字符(除了换行符)*? 非贪婪匹配(最小匹配),尽可能少地匹配字符
正则表达式示例: [A-Z]+\d+ 的解释如下:
分解说明:
1. [A-Z]+
[A-Z]- 字符类,匹配任意一个大写英文字母(A到Z)+- 量词,表示前面的字符类必须出现1次或多次- 所以
[A-Z]+匹配一个或多个连续的大写字母- ✅ 匹配: “A”, “AB”, “ABC”, “SE”
- ❌ 不匹配: “a”, “A1”, “”(空字符串)
2. \d+
\d- 匹配任意一个数字字符(0-9)+- 量词,表示前面的数字必须出现1次或多次- 所以
\d+匹配一个或多个连续的数字- ✅ 匹配: “1”, “12”, “123”, “4502”
- ❌ 不匹配: “a”, “1a”, “”(空字符串)
3. 整体组合 [A-Z]+\d+
- 表示必须先有一个或多个大写字母,然后紧接着有一个或多个数字
- 中间不能有其他字符(包括空格)
正则表达式示例: [A-Z]{1,4}\d{3,} 的解释如下:
分解说明:
1. [A-Z]{1,4}
[A-Z]- 匹配任意一个大写英文字母(A到Z){1,4}- 量词,表示前面的字符必须出现最少1次,最多4次- 所以
[A-Z]{1,4}匹配1到4个连续的大写字母- ✅ 匹配: “A”, “AB”, “ABC”, “ABCD”(最多4个)
- ❌ 不匹配: “ABCDE”(超过4个),”a”(小写字母)
2. \d{3,}
\d- 匹配任意一个数字字符(0-9){3,}- 量词,表示前面的数字必须出现最少3次,最多无限制- 所以
\d{3,}匹配3个或更多连续的数字- ✅ 匹配: “123”, “1234”, “123456789”(至少3个)
- ❌ 不匹配: “12”(少于3个)
3. 整体组合 [A-Z]{1,4}\d{3,}
- 表示必须先有1-4个大写字母,然后紧接着有3个或更多数字
- 中间不能有其他字符
匹配示例:
✅ 能匹配的字符串:
"SE4502"→ [A-Z]{1,4}匹配”SE”(2个字母),\d{3,}匹配”4502”(4个数字)"A123"→ [A-Z]{1,4}匹配”A”(1个字母),\d{3,}匹配”123”(3个数字)"ABC12345"→ [A-Z]{1,4}匹配”ABC”(3个字母),\d{3,}匹配”12345”(5个数字)"ABCD999"→ [A-Z]{1,4}匹配”ABCD”(4个字母,上限),\d{3,}匹配”999”(3个数字)
❌ 不能匹配的字符串:
"SE45"→ 数字部分只有2个,不够3个"SE4"→ 数字部分只有1个"ABCDE123"→ 字母部分5个,超过4个上限"S12"→ 数字部分只有2个,不够3个"SE4502AB"→ 后面还有字母"123SE"→ 数字在前,字母在后
与 [A-Z]+\d+ 的区别:
| 正则 | 字母部分 | 数字部分 | 示例 |
|---|---|---|---|
[A-Z]+\d+ |
1个或更多 | 1个或更多 | “ABCDEFGH12” |
[A-Z]{1,4}\d{3,} |
1-4个 | 3个或更多 | “SE4502” |
这个正则更适合匹配标准的产品型号,比如:
"SE4502"✓"AB123"✓"M999"✓"PROD12345"✗(字母超过4个)
# 示例关于php中正则匹配包括换行符在内的任意字符preg_match_all('/<div class="list">.*?<\/div>/is', $content, $data);
示例:
$v = 'SE3083广物国际';// 使用捕获组来分别匹配两部分preg_match('/([A-Z]+\d+)(.*)/', $v, $resone);$code = $resone[1]; // $resone[1] 存放第一个括号匹配到的内容$name = $resone[2]; // $resone[2] 存放第二个括号匹配到的内容echo "代码: " . $code; // 输出: 代码: SE3083echo "名称: " . $name; // 输出: 名称: 广物国际
