Python 正则匹配数字
正则表达式是一种强大的文本匹配工具,可以帮助我们在文本中查找特定模式的字符串。在Python中,通过re
模块可以轻松地使用正则表达式。本文将详细介绍如何使用正则表达式来匹配数字。
匹配整数
首先,我们来看如何匹配整数。整数由一串数字组成,可以包含正负号。下面是一个简单的正则表达式,可以用来匹配整数:
import re
pattern = r"[-+]?\d+"
text = "The number is 42"
match = re.search(pattern, text)
if match:
print("Found:", match.group())
else:
print("No match")
在这个示例中,我们使用re.search()
函数来在text
中查找符合pattern
的整数。pattern
是一个正则表达式,[-+]
表示整数可以包含正负号,\d+
表示整数由一个或多个数字组成。
运行结果为:
Found: 42
我们成功地从text
中匹配到了整数42。
匹配小数
接下来,我们看如何匹配小数。小数由整数部分、小数点和小数部分组成。下面是一个匹配小数的正则表达式:
pattern = r"[-+]?\d+\.\d+"
text = "The number is 3.14"
match = re.search(pattern, text)
if match:
print("Found:", match.group())
else:
print("No match")
在这个示例中,我们使用[\+\-]?\d+\.\d+
来匹配小数。[\+\-]
表示小数可以包含正负号,\d+\.\d+
表示小数由一个或多个数字、一个小数点和一个或多个数字组成。
运行结果为:
Found: 3.14
我们成功地从text
中匹配到了小数3.14。
匹配科学计数法
有时候数字会以科学计数法的形式表示,如3.0e8
表示3乘以10的8次方。下面是一个匹配科学计数法的正则表达式:
pattern = r"[-+]?\d+\.\d+[eE][-+]?\d+"
text = "The speed of light is 3.0e8 m/s"
match = re.search(pattern, text)
if match:
print("Found:", match.group())
else:
print("No match")
在这个示例中,我们使用[-+]?\d+\.\d+[eE][-+]?\d+
来匹配科学计数法。[-+]?\d+\.\d+
表示科学计数法的小数部分,[eE]
表示科学计数法的e或E,[-+]?\d+
表示科学计数法的指数部分。
运行结果为:
Found: 3.0e8
我们成功地从text
中匹配到了科学计数法3.0e8。
匹配多个数字
有时候我们需要从文本中匹配多个数字,可以使用re.findall()
函数来找到所有匹配的数字。下面是一个匹配多个整数的示例:
pattern = r"[-+]?\d+"
text = "The numbers are 42 and -100"
matches = re.findall(pattern, text)
for match in matches:
print("Found:", match)
在这个示例中,我们使用re.findall()
函数找到了所有匹配pattern
的整数。matches
是一个包含所有整数的列表,我们可以逐一打印出来。
运行结果为:
Found: 42
Found: -100
我们成功地从text
中匹配到了整数42和-100。
结论
使用正则表达式可以方便地从文本中匹配数字,无论是整数、小数还是科学计数法。通过灵活运用正则表达式,我们可以快速有效地提取出需要的信息。