如何匹配多个以=开头的子串并通过=符号拼接得到目标字符串?
实现方案
这里提供两种便捷实现思路,都可以快速得到目标结果:
方案1:正则匹配+自定义替换逻辑(以Python为例)
直接用你已有的匹配规则捕获连续的=开头子串,对每个捕获结果做清洗拼接即可:
import re input_str = "KsKd2s4dAs =AhAd2s4dKs =AsAd2s4dKs 5s5d6s6d2c AsAd6s6d2c =AdQdKdJdTd =AhQhKhJhTh =AsQsKsJsTs" def process_match(match): # 拆分匹配到的连续子串,去掉每个子串开头的=后用=拼接 items = match.group().strip().split() return '='.join([item.lstrip('=') for item in items]) # 替换所有连续=开头的子串组 result = re.sub(r'(=\S+\s*)+', process_match, input_str) print(result)
运行后输出结果完全符合要求:
KsKd2s4dAs AhAd2s4dKs=AsAd2s4dKs 5s5d6s6d2c AsAd6s6d2c AdQdKdJdTd=AhQhKhJhTh=AsQsKsJsTs
方案2:两步纯正则替换(通用方案,支持绝大多数编程语言、文本编辑器)
不需要写代码逻辑,仅做两次正则替换即可完成:
- 第一次替换:匹配规则为
\s=,替换值为=,作用是把连续=开头子串中间的空格直接替换为= - 第二次替换:匹配规则为
(?<=^| )=,替换值为空,作用是删掉所有子串开头多余的=
两次替换后即可直接得到目标结果。
内容的提问来源于stack exchange,提问作者Jurij Jazdanov
相关产品推荐
相关产品推荐

