如何使用正则表达式仅保留字符串两个冒号间的英文字母
正则实现冒号区间仅保留英文字母
需求说明
实现字符串处理逻辑:移除无关字符,仅保留成对冒号(:)之间的英文字母,冒号外的内容保持原样。
测试样例
- 输入测试代码:
text = "nice :star-struck: :face blowing a kiss: 99"
- 期望输出:
nice :starstruck: :faceblowingakiss: 99
实现方案
用两层正则替换就能搞定,思路很简单:
- 第一层正则通过零宽断言精准定位所有成对冒号之间的内容段,不会误改冒号外的文本
- 对每段匹配到的冒号间内容做二次替换,删掉所有非英文字母的字符即可
完整可运行代码:
import re text = "nice :star-struck: :face blowing a kiss: 99" text = re.sub( r"(?<=:[a-zA-Z])(.*?)(?=:)", lambda match: re.sub(r"[^a-zA-Z]", "", match.group(1)), text ) print(text)
运行代码后输出结果和预期完全一致。
感谢Samwise、Andrej Kesely提供该实现方案
内容的提问来源于stack exchange,提问作者GigliOneiric
相关产品推荐
相关产品推荐

