如何提取字符串中指定子串,ON之前的2个相邻子字符串
需求实现方法
方法一:正则表达式匹配
直接通过正则的正向预查规则定位,ON的位置,同时捕获前方两个逗号分隔的子串,所用正则为([^,]+,[^,]+)(?=,ON)。
参考Python实现:
import re origin_str = "J0C,DRUMMONDVILLE,QC,CDP,K2E,NEPEAN,ON,LCD,MERIVALE,K9A,COBOURG,ON,LCD,MAIN" match_list = re.findall(r'([^,]+,[^,]+)(?=,ON)', origin_str) result = ','.join([f"{item},ON" for item in match_list]) print(result)
运行后直接输出K2E,NEPEAN,ON,K9A,COBOURG,ON。
方法二:分割列表遍历处理
先把字符串按逗号拆分为子串列表,再遍历找值为ON的元素,取其前两个元素和自身拼接即可。
参考Python实现:
origin_str = "J0C,DRUMMONDVILLE,QC,CDP,K2E,NEPEAN,ON,LCD,MERIVALE,K9A,COBOURG,ON,LCD,MAIN" str_list = origin_str.split(',') result_list = [] for idx in range(2, len(str_list)): if str_list[idx] == 'ON': result_list.extend([str_list[idx-2], str_list[idx-1], str_list[idx]]) result = ','.join(result_list) print(result)
两种方案均可实现需求,正则写法更简洁,列表遍历逻辑更直观,方便后续调整提取规则。
内容的提问来源于stack exchange,提问作者ML_User
相关产品推荐
相关产品推荐

