如何使用Python正则表达式移除带点号连接的内容
用Python正则移除带点号连接的内容
嘿,这问题很常见,用Python的正则表达式就能完美解决!咱们先拆解需求:你要把字符串里所有带点号连接的连续字符块(比如123.4445.764、goo.34.hi这种)彻底移除,最后只留下纯文本单词。
核心思路
我们需要写出能精准匹配这类带点序列的正则表达式,这类序列的核心特征是:无空格、至少包含一个点号,前后由非空白字符组成。然后用re.sub()方法把匹配到的内容替换为空,最后处理下多余的空格即可。
具体实现代码
import re # 你的原始字符串 input_str = 'random random 123.4445.764 random goo.34.hi random' # 定义匹配带点连接内容的正则模式 pattern = r'\S*\.\S+' # 第一步:替换带点内容为空 temp_result = re.sub(pattern, '', input_str) # 第二步:合并连续空格并去除首尾空格 final_result = re.sub(r'\s+', ' ', temp_result).strip() print(final_result) # 输出: random random random random
正则模式拆解
\S:匹配任意非空白字符(字母、数字、下划线等,排除空格、制表符、换行符)\S*:允许匹配目标的前缀有0个或多个非空白字符\.:转义后的点号,匹配实际的.(正则中.是通配符,必须转义才能匹配真实的点)\S+:要求目标的后缀至少有1个非空白字符,确保这是“带点连接”的有效内容,而非单独的点
更严格的匹配(可选)
如果你的场景需要排除纯点号(比如...)或首尾为点的序列(比如.abc、abc.),可以使用更严格的正则模式:r'\w+\.\w+(\.\w+)*'。这个模式要求必须是「词字符(字母/数字/下划线)+点+词字符」的重复结构,完全贴合你例子中的目标格式。
内容的提问来源于stack exchange,提问作者Akshay Gupta
相关产品推荐
相关产品推荐

