You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式:移除双特定子串提取中间内容及原理解析

问题描述

给定字符串:

s: str = 'ENGBNAmphitheatre Pkwy\x1e\x1eNASY%am|fi|te|"a|tre;ENGY*"{m|fI|%Ti|t@r;ENGY"{m|fI|%Ti|t@r *"pArk|%we;NASY%am|fi|te|"a|tre "par|kwei'

要求通过单次正则替换移除两个特定子串,提取中间目标内容:

  • 开头的ENGBN
  • 包含特殊字符(如\x1e)的特定子串:
pat2: str = """\x1e\x1eNASY%am|fi|te|"a|tre;ENGY*"{m|fI|%Ti|t@r;ENGY"{m|fI|%Ti|t@r *"pArk|%we;NASY%am|fi|te|"a|tre "par|kwei"""

期望结果:

result: str = "Amphitheatre Pkwy"
解决方案

代码实现

import re

s = 'ENGBNAmphitheatre Pkwy\x1e\x1eNASY%am|fi|te|"a|tre;ENGY*"{m|fI|%Ti|t@r;ENGY"{m|fI|%Ti|t@r *"pArk|%we;NASY%am|fi|te|"a|tre "par|kwei'
# 构建复合正则模式
pattern = r'^ENGBN|' + re.escape(r'\x1e\x1eNASY%am|fi|te|"a|tre;ENGY*"{m|fI|%Ti|t@r;ENGY"{m|fI|%Ti|t@r *"pArk|%we;NASY%am|fi|te|"a|tre "par|kwei')
result = re.sub(pattern, '', s)
print(result)  # 输出: Amphitheatre Pkwy

正则表达式工作原理

  1. ^ENGBN:^是行首锚定符,确保只匹配字符串开头的ENGBN,避免误匹配中间出现的相同字符组合。
  2. |:正则中的逻辑或运算符,连接两个独立的匹配规则,只要子串满足任意一个规则就会被替换。
  3. re.escape(...):由于pat2包含大量正则特殊字符(如|、*、"、;等),这些字符在正则语法中有特殊含义,re.escape会将它们转义为普通文本字符,保证完全匹配指定的目标子串,不会被解析为正则语法。
  4. re.sub(pattern, '', s):单次调用替换方法,将所有匹配到的子串直接替换为空字符串,一步得到目标内容。

内容的提问来源于stack exchange,提问作者Coldchain9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:33:39