如何使用正则表达式解析以f开头字符串中的指定格式数字组列表
实现方案
核心思路通过两步实现:先做格式合法性校验,再提取所有符合要求的字段。
正则规则说明
格式校验正则
使用正则 ^f(?:\s+\d+\/\d+\/\d+)+$ 可同时满足你的两个校验需求:
^f限定字符串必须以字母f开头(?:\s+\d+\/\d+\/\d+)+是非捕获组,要求f之后至少存在1组「空格分隔的三组数字用/拼接」的结构$限定字符串末尾无其他无效字符
字段提取正则
校验通过后,用 \d+\/\d+\/\d+ 做全局匹配,就能拿到所有目标字段。
代码示例(Python)
import re def parse_obj_face_line(line: str): line = line.strip() # 校验格式合法性 if not re.fullmatch(r"^f(?:\s+\d+\/\d+\/\d+)+$", line): return [] # 提取所有匹配的字段 return re.findall(r"\d+\/\d+\/\d+", line) # 测试 if __name__ == "__main__": line1 = "f 1/2/3" line2 = "f 1/2/3 4/5/6 7/8/9 10/11/12" print(parse_obj_face_line(line1)) # 输出: ['1/2/3'] print(parse_obj_face_line(line2)) # 输出: ['1/2/3', '4/5/6', '7/8/9', '10/11/12']
其他语言实现思路
所有支持正则全局匹配的语言都可以用相同逻辑实现:
- 先调用全匹配接口校验输入行格式是否符合要求
- 格式合法的前提下,调用全局匹配接口提取所有符合
\d+\/\d+\/\d+的子串即可
内容的提问来源于stack exchange,提问作者IC_
相关产品推荐
相关产品推荐

