正则优化需求:提取iPhone型号并统一捕获至组1
iPhone型号标识符提取正则优化方案
问题分析
原正则无法处理带世代描述的SE型号(如iPhone SE (1st Generation)无法提取为SE1),且匹配结果分散在多个捕获组,无法统一到组1。
修正后的正则表达式
iPhone\s*((?:SE(?:.*?(1st|2nd|3rd|4th))?)|(\d+)|X)
匹配与处理逻辑
- 该正则将所有型号相关内容统一捕获到组1
- 对组1的匹配结果做后续替换处理:
- 将包含
1st的SE匹配结果替换为SE1 - 将包含
2nd的替换为SE2,3rd替换为SE3,4th替换为SE4 - 单独的
SE、数字(如14)、X直接保留原内容
- 将包含
测试示例
| 测试字符串 | 提取结果 |
|---|---|
| iPhone SE (1st Generation) | SE1 |
| iPhone SE 2nd Generation | SE2 |
| iPhone 14 Pro | 14 |
| iPhone X | X |
| iPhone SE | SE |
关键调整说明
- 把所有型号分支嵌套进外层组1,确保所有匹配结果统一捕获
- 新增对SE世代标签(1st/2nd/3rd/4th)的匹配分支,为后续转换数字后缀提供依据
内容的提问来源于stack exchange,提问作者CrazyEight
相关产品推荐
相关产品推荐

