Python 正则表达式

Python 正则表达式

正则表达式是一种用来匹配字符串中模式的工具,非常实用。Python内置了re模块,提供了对正则表达式的支持,使用起来非常简便。

正则表达式语法

正则表达式基本语法如下:

  • “.” :匹配除换行符以外的任意字符;
  • “^” :匹配字符串开头;
  • “$” :匹配字符串结尾;
  • “*” :匹配前面的字符0次或多次;
  • “+” :至少匹配前面的字符1次或多次;
  • “?” :匹配前面的字符0次或1次;
  • “()” :标记一个子表达式的开始和结束位置;
  • “|” :分割两个可选项;
  • “\” :转义特殊字符;
  • “[]” :匹配一个字符集合。

具体用法可以看下面的示例代码。

re模块介绍

re模块是Python中用来处理正则表达式的模块,使用前需要先导入:

import re

常用的函数有:

  • re.compile(pattern, flags=0) :将正则表达式编译为一个实例对象;
  • re.search(pattern, string, flags=0) :在字符串中搜索符合正则表达式的第一个位置,返回match对象;
  • re.match(pattern, string, flags=0) :从字符串开头开始匹配正则表达式,返回match对象;
  • re.split(pattern, string, maxsplit=0, flags=0) :按照正则表达式切分字符串并返回一个列表;
  • re.findall(pattern, string, flags=0) :搜索字符串,以列表形式返回全部匹配的子串;
  • re.finditer(pattern, string, flags=0) :搜索字符串,返回一个匹配结果的迭代器;
  • re.sub(pattern, repl, string, count=0, flags=0) :用指定的字符串替换匹配到的子串,并返回替换后的字符串。

re.match() 和 re.search()

re.match()和re.search()函数都是用来在字符串中搜索符合正则表达式的位置的,其中re.match()是从字符串的开始位置开始匹配,re.search()可以在任意位置开始匹配。

import re

# 匹配字符串开头
result = re.match('hello', 'hello, world!')
print(result)   # <re.Match object; span=(0, 5), match='hello'>

# 匹配字符串其它位置
result = re.search('world', 'hello, world!')
print(result)   # <re.Match object; span=(7, 12), match='world'>

re.split()

re.split()函数可以用来按照正则表达式切分字符串,并返回一个列表。可以用来切分一段文本为单词列表。

import re

text = 'Hello, I\'m a Python beginner!'
words = re.split('\W+', text)
print(words)    # ['Hello', 'I', 'm', 'a', 'Python', 'beginner', '']

re.findall() vs re.finditer()

re.findall()函数可以用来搜索字符串,返回一个列表,其中包含了所有符合正则表达式的子串。而re.finditer()函数则返回一个迭代器,可以在循环中一个一个读取匹配到的结果。

import re

text = 'Python is a good language for beginners!'

# 返回符合正则表达式的所有子串
result = re.findall('\w+', text)
print(result)   # ['Python', 'is', 'a', 'good', 'language', 'for', 'beginners']

# 返回迭代器
iterator = re.finditer('\w+', text)
for match in iterator:
    print(match.group(), end=' ')   # Python is a good language for beginners

re.sub()

re.sub()函数可以用来替换字符串中符合正则表达式的子串,可以用来进行文本的替换。

import re

text = 'Python is a good language for beginners, but it is also used by experienced programmers.'

# 将所有的'good'替换为'great'
new_text = re.sub('good', 'great', text)
print(new_text)     # Python is a great language for beginners, but it is also used by experienced programmers.

结论

使用Python中re模块可以方便地处理正则表达式,其中常用的函数有re.compile()、re.search()、re.match()、re.split()、re.findall()、re.finditer()和re.sub()等。熟练掌握这些函数,可以实现文本的搜索、切分、替换等功能,对于处理文本数据会大有帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程