如何使用正则表达式提取字符串中嵌入单词内的数字?
提取嵌入单词内部数字的正则方案
你需要匹配的是仅出现在单词内部的数字——也就是数字前后至少有一侧是字母,而非单独存在的数字序列。可以通过正则表达式的环视断言实现:
正则表达式
(?<=[a-zA-Z])\d+|\d+(?=[a-zA-Z])
代码示例
import re text = 'I need this number inside my wor5d, but also this word3 and this 4word, but not this 1 and not this 555.' target_numbers = re.findall(r'(?<=[a-zA-Z])\d+|\d+(?=[a-zA-Z])', text) print(target_numbers) # 输出: ['5', '3', '4']
正则逻辑解释
(?<=[a-zA-Z])\d+:正向回顾后发断言,匹配前面紧跟字母的数字序列(对应wor5d里的5、word3里的3)|:逻辑或,匹配满足任意一侧条件的内容\d+(?=[a-zA-Z]):正向预发断言,匹配后面紧跟字母的数字序列(对应4word里的4)
这个正则会自动排除单独存在的数字(比如示例中的1、555),因为它们前后都没有字母,不满足任一断言条件。
内容的提问来源于stack exchange,提问作者Kiri
相关产品推荐
相关产品推荐

