Python正则匹配数字详解
1. 什么是正则表达式
正则表达式是一种用来匹配字符串的强大工具,它可以用简洁的符号来描述匹配规则。在Python中,我们可以通过re
模块来实现正则表达式的功能。
2. 匹配数字的基本规则
正则表达式中用来匹配数字的符号是\d
,它表示匹配任意一个数字字符。下面是使用正则表达式进行数字匹配的示例代码:
import re
text = "There are 10 apples in the basket."
pattern = r"\d" # 匹配一个数字字符
result = re.findall(pattern, text)
print(result) # 输出:['1', '0']
运行结果说明:上述代码使用re.findall()
函数在字符串text
中查找匹配正则表达式pattern
的所有字符,并将结果以列表形式返回。输出是['1', '0']
,即找到了字符串中的两个数字字符。
3. 匹配连续数字
有时候,我们可能需要匹配连续的数字。正则表达式中用+
表示匹配前一个字符的一个或多个实例。接下来的代码演示了如何匹配连续数字:
import re
text = "I have 123 bananas."
pattern = r"\d+" # 匹配一个或多个数字字符
result = re.findall(pattern, text)
print(result) # 输出:['123']
运行结果说明:正则表达式r"\d+"
表示匹配一个或多个数字字符,因此在字符串text
中找到了连续的数字123
。
4. 匹配指定范围的数字
有时候,我们需要匹配指定范围内的数字,比如只匹配1到5之间的数字。正则表达式中可以使用[]
来表示可选字符的范围。以下示例演示了如何匹配1到5之间的数字:
import re
text = "There are 3 apples and 6 oranges."
pattern = r"[1-5]" # 匹配1到5之间的数字字符
result = re.findall(pattern, text)
print(result) # 输出:['3']
运行结果说明:正则表达式r"[1-5]"
表示匹配1到5之间的数字字符,因此在字符串text
中仅找到了数字3
。
5. 匹配固定长度的数字
有时候,我们需要匹配固定长度的数字,比如只匹配3位数的数字。正则表达式中可以使用{n}
来表示前一个字符的恰好出现n次。以下示例演示了如何匹配3位数的数字:
import re
text = "There are 123 apples and 456 oranges."
pattern = r"\d{3}" # 匹配3位数的数字字符
result = re.findall(pattern, text)
print(result) # 输出:['123', '456']
运行结果说明:正则表达式r"\d{3}"
表示匹配3位数的数字字符,因此在字符串text
中找到了两个3位数的数字123
和456
。
6. 匹配多种情况的数字
有时候,我们需要同时匹配多种情况的数字。正则表达式中可以使用|
来表示多个选择的分隔符。以下示例演示了如何同时匹配奇数和偶数:
import re
text = "There are 10 apples and 11 oranges."
pattern = r"\d+[02468]|\d*[13579]" # 匹配奇数和偶数
result = re.findall(pattern, text)
print(result) # 输出:['10', '11']
运行结果说明:正则表达式r"\d+[02468]|\d*[13579]"
表示匹配奇数和偶数。其中,\d+[02468]
表示匹配一个或多个数字字符后面跟着偶数,\d*[13579]
表示匹配零个或多个数字字符后面跟着奇数。在字符串text
中找到了数字10
(偶数)和11
(奇数)。
总结
通过以上示例,我们可以看到如何使用正则表达式在Python中匹配数字。掌握正则表达式的基本规则,可以在处理文本、数据清洗等场景中发挥重要作用。