Python正则替换:如何删除#之间的所有字符?现有规则失效求助
解决#符号间内容的删除问题
问题分析
你之前用的正则仅匹配字母组成的内容,还限定了#前后的空格,但实际待处理内容里包含下划线、数字,且#和内容之间无空格,部分#还紧跟括号、文本等字符,导致原有规则覆盖不全,无法完成替换。
解决方案
使用非贪婪模式的正则,匹配任意两个#之间的所有内容,再将其替换为空即可。具体代码如下:
import re text = 'Please direct all communications to the HR Department within Refined Resources (#URL_80d75e0d07ca8b108539318a0443bfe5d1ff472afa0c4540b77079c5d5f31eee#)\xa0#EMAIL_0b13a2cfd4718ce252c09b2353d692a73bd32552e922c5db6cad5fb7e9a2c6c3#Darren Lawson | VP of Recruiting |\xa0#EMAIL_395225df8eed70288fc67310349d63d49d5f2ca6bc14dbb5dcbf9296069ad88c#\xa0| #PHONE_70128aad0c118273b0c2198a08d528591b932924e165b6a8d1272a6f9e2763d1#' # 先将\xa0替换为空格 text = text.replace('\xa0', ' ') # 匹配所有#开头到#结尾的内容,采用非贪婪模式避免过度匹配 text = re.sub(r'#.*?#', '', text) print(text)
代码解释
- 核心正则
#.*?#的作用:#精准匹配开头的#符号.*?是非贪婪匹配规则,会匹配任意字符(换行符除外),直到遇到第一个#就停止,避免把多个独立的#块当成一个整体匹配- 末尾的
#匹配结束的#符号
- 替换后即可清空所有#之间的内容,得到预期结果。
运行后输出:
Please direct all communications to the HR Department within Refined Resources () Darren Lawson | VP of Recruiting | |
内容的提问来源于stack exchange,提问作者Azareel Fausan
相关产品推荐
相关产品推荐

