如何用Python正则表达式提取按空格分割后含数字的子串
提取含数字的空格分割子串(Python正则实现)
需求说明
从以空格分割的字符串中提取包含数字的目标子串,示例如下:
- 输入:
"Something 19.28 else"→ 输出:"19.28" - 输入:
"Someone 18.16-one-0 other"→ 输出:"18.16-one-0"
实现代码
import re string = "Someone 18.16-one-0 other" result = re.search('(?<=\s)\d.*?(?=\s|\Z)', string).group() print(result) # 输出:18.16-one-0
代码与正则解释
Python的re.search()函数会在目标字符串中匹配指定正则模式,返回匹配对象(match object),调用.group()方法即可提取匹配到的字符串内容。
正则表达式(?<=\s)\d.*?(?=\s|\Z)可拆解为三部分:
(?<=\s):正向断言,确保匹配内容的前一个字符是空格\d.*?:匹配以数字开头的任意内容,?启用非贪婪模式,避免过度匹配后续内容(?=\s|\Z):正向断言,确保匹配内容的后一个字符是空格,或是字符串结尾(\Z表示行尾)
关键细节
非贪婪模式的.*?会让正则匹配到第一个符合后续断言条件的位置就停止,以此精准捕获单个空格分割的含数字子串,不会误匹配到后续无关内容。
内容的提问来源于stack exchange,提问作者decipher
相关产品推荐
相关产品推荐

