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