求助:编写正则表达式(Regex)匹配目标字符串指定内容
Hey there! 我帮你整理了针对这个字符串的正则匹配方案,结合你需要提取指定加粗信息的需求,下面分情况详细说明:
正则匹配方案及实操说明
首先把你提供的目标字符串贴出来方便对照:
"FM 2222 RD / RIVER PLACE BLVD","0:",,"18:","00"," 2008-08-14 "," CRASH/LEAVING THE SCENE ","30.39452568","(30.39452568-97.84551164)","-97.84551164","18:00:00","4","2008-08-14 18:00:00-06:00","20085043619"
一、针对不同目标的正则实现
假设你需要提取的核心加粗信息包括:事故类型(CRASH/LEAVING THE SCENE)、事故日期、经纬度坐标、事故编号,下面给出精准匹配的正则:
1. 单独提取事故类型
如果只需要抓取事故类型,这个正则足够精准:
" (\w+/\w+ THE \w+) "
- 说明:它专门匹配被双引号+空格包裹的、符合
[单词]/[单词] THE [单词]格式的内容,刚好命中你的事故类型。要是以后事故类型有小变化,也可以换成更通用的" ([^"]+) ",然后通过字段位置(第7个字段,从0开始数是索引6)来定位。
2. 一次性提取多个核心字段
因为你的字符串是逗号分隔的结构化数据,用正则批量捕获多个字段也很方便,这个正则可以一次性抓日期、事故类型、经纬度、编号:
"[^"]*","[^"]*","[^"]*","[^"]*","[^"]*"," ([\d-]+) "," ([^"]+) ","([\d.-]+)","[^"]*","([\d.-]+)","[^"]*","[^"]*","[^"]*","([\d]+)"
- 捕获组对应内容:
- 第1组:
2008-08-14(事故日期) - 第2组:
CRASH/LEAVING THE SCENE(事故类型) - 第3组:
30.39452568(纬度) - 第4组:
-97.84551164(经度) - 第5组:
20085043619(事故编号)
- 第1组:
3. 提取带括号的完整坐标对
如果需要那个带括号的坐标字符串(30.39452568-97.84551164),用这个正则:
\(([\d.-]+)-([\d.-]+)\)
- 说明:它匹配括号包裹的、用减号分隔的两个数字串,捕获组1是纬度,捕获组2是经度,能精准拆分坐标。
二、实用小建议
- 其实如果只是偶尔处理这类数据,不用正则反而更简单——直接按逗号分割字符串,然后取对应索引的字段就行(比如Python里用
your_string.split(','),索引6是事故类型,索引5是日期),不用记复杂的正则语法。 - 要是必须用正则,建议先找个在线正则工具测试下匹配结果是否符合预期,毕竟原字符串里有空字段(比如第三个字段是
""),得确保正则能兼容这类情况。 - 如果以后字段位置有变化,记得调整正则里
"[^"]*"的数量(每个"[^"]*"对应一个逗号分隔的字段)。
内容的提问来源于stack exchange,提问作者hayde011
相关产品推荐
相关产品推荐

