Python正则表达式
栏目:
python
发布时间:2024-11-01
Python 的正则表达式(Regular Expressions)是一个强大的文本处理工具,它允许你使用特定的模式来匹配、查找、替换或分割字符串。Python 通过内置的 re 模块来支持正则表达式。下面是一个简单的 Python 正则表达式教程,涵盖基础到进阶的内容。
1. 导入 re 模块
在 Python 中使用正则表达式之前,首先需要导入 re 模块。
import re
2. 基本匹配
- match() 方法:从字符串的起始位置匹配一个模式,如果匹配成功返回一个匹配对象,否则返回 None。
pattern = re.compile(r'hello')
match = pattern.match('hello world')
if match:
print("Match found:", match.group())
else:
print("No match")
- search() 方法:扫描整个字符串,查找第一个匹配项。
match = re.search(r'world', 'hello world')
if match:
print("Match found:", match.group())
else:
print("No match")
3. 匹配多个字符
- **
.**:匹配除换行符以外的任意字符。 - **
***:匹配前面的子表达式零次或多次。 - **
+**:匹配前面的子表达式一次或多次。 - **
?**:匹配前面的子表达式零次或一次。 - **
{n}**:n 是一个非负整数。匹配确定的 n 次。 - **
{n,}**:n 是一个非负整数。至少匹配 n 次。 - **
{n,m}**:m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。
4. 边界匹配
- **
^**:匹配输入字符串的开始位置。 - **
$**:匹配输入字符串的结束位置。
5. 字符集
- **
[abc]**:匹配方括号中的任意字符。 - **
[^abc]**:匹配除了方括号中字符的任意字符。 - **
[a-z]**:匹配任何小写字母。 - **
[A-Z]**:匹配任何大写字母。 - **
[0-9]**:匹配任何数字。 - **
\d**:等价于[0-9]。 - **
\D**:等价于[^0-9],匹配任何非数字字符。 - **
\w**:匹配任何字母数字字符,等价于[a-zA-Z0-9_]。 - **
\W**:匹配任何非字母数字字符,等价于[^a-zA-Z0-9_]。 - **
\s**:匹配任何空白字符,包括空格、制表符、换页符等。 - **
\S**:匹配任何非空白字符。
6. 分组和捕获
- **
()**:用于分组和捕获匹配的文本。
match = re.search(r'(\b\w+)\s(\b\w+)', 'hello world')
if match:
print(match.group(1), match.group(2))
7. 替换和分割
sub()方法:用于替换字符串中的匹配项。
new_string = re.sub(r'\d+', 'NUMBER', 'hello 123 world 456')
print(new_string)
split()方法:根据匹配进行分割字符串。
words = re.split(r'\s+', 'hello world')
print(words)
8. 编译正则表达式
为了提高效率,可以使用 re.compile() 编译一个正则表达式对象,然后使用该对象的方法。
pattern = re.compile(r'\bfoo\b')
9. 标志
正则表达式可以指定一些标志来改变其工作方式,如 re.IGNORECASE 忽略大小写,re.MULTILINE 允许多行模式等。
match = re.search(r'^foo', 'foo\nbar\nfoo', re.MULTILINE)
if match:
print("Match found:", match.group())
这个教程提供了 Python 正则表达式的基础和进阶内容。掌握这些内容后,你将能够高效地处理字符串匹配、查找、替换和分割等任务。
本文地址:https://www.tides.cn/p_python-re