如何在Python中移除字符串中从YYYY.MM.DD到Tech|的子串
问题:移除指定文本段内容
输入文本:
dbt とは何をするツールなのか?2022.02.09data build tool|dbt|Tech|こんにちは、ソフトウェアエンジニアの冨田です。
期望输出:
dbt とは何をするツールなのか?こんにちは、ソフトウェアエンジニアの冨田です。
你当前使用的代码无法移除Tech|部分:
text = re.sub(r'\d{4}\.\d{2}\.\d{2}(?=.*Tech|)', '', text)
问题原因
- 正则中的
(?=.*Tech|)是正向预查,仅用于断言后续存在指定内容,不会实际匹配并删除该部分; |是正则元字符,未转义的话会被解析为分支匹配,导致Tech|被错误识别为Tech或空字符串。
解决方法
使用非贪婪匹配从日期开始到Tech|的所有内容,同时转义|:
import re text = "dbt とは何をするツールなのか?2022.02.09data build tool|dbt|Tech|こんにちは、ソフトウェアエンジニアの冨田です。" result = re.sub(r'\d{4}\.\d{2}\.\d{2}.*?Tech\|', '', text) print(result)
正则说明
\d{4}\.\d{2}\.\d{2}:匹配YYYY.MM.DD格式的日期;.*?:非贪婪匹配任意字符(尽可能少匹配),避免跳过目标Tech|匹配到更后面的内容;Tech\|:转义|后,精确匹配Tech|字符串,确保删除截止到该位置的所有内容。
运行后即可得到期望的输出结果。
内容的提问来源于stack exchange,提问作者Julieta M.
相关产品推荐
相关产品推荐

