正则表达式见高级话题

In [ ]:
# 单词边界:
# 匹配完整的单词:使用 \b 可以确保我们匹配到的是完整的单词,而不是单词的一部分。例如,正则表达式 \bcat\b 会匹配单词“cat”,但不会匹配“catalog”中的“cat”
# 位置而非字符:\b 匹配的是一个位置,而不是一个具体的字符。它表示单词字符和非单词字符之间的过渡点。

1 匹配字符串中的所有整数

In [2]:
import re
text="jjbhih785785njlkn515"
pattern=r'\d+'#不用+会是单个数字
matches=re.findall(pattern,text)
print(matches)# 输出:['785785', '515']
['785785', '515']
In [3]:
import re
text = "这个句子包含一些整数,比如-123, 456, 和7890,还有小数如123.45和-678.90。"
# 正则表达式模式,用于匹配整数
# \b 表示单词边界,确保我们匹配的是完整的整数而不是其他数字的一部分
# -?\d+ 匹配可选的负号(-)后跟一个或多个数字(\d+)
pattern = r'\b-?\d+\b'
matches = re.findall(pattern, text)
print(matches)  # 输出:['-123', '456', '7890']

# 注意,这些整数是以字符串形式返回的,如果需要它们作为整数类型,你可以使用列表推导式将它们转换为int类型:
integer_matches = [int(match) for match in matches]
print(integer_matches)  # 输出:[-123, 456, 7890]
['-123', '456', '-678', '90']
[-123, 456, -678, 90]

2 匹配字符串中的所有浮点数

In [ ]:
import re
text = "这个句子包含一些整数,比如-123, 456, 和7890,还有小数如123.45和-678.90。"
# . 在正则表达式中是一个特殊字符,表示任意单个字符,需要对其进行转义
# 对于浮点数来说,通常只有小数点后的部分才需要单词边界来确保完整性,因为浮点数前面可能有负号或空格等字符
pattern=r'-?\d+\.\d+\b'
matches = re.findall(pattern, text)
print(matches)# 输出:['-678.90']