个性化阅读
专注于IT技术分析

Python正则表达式用法详解

本文概述

正则表达式可以定义为用于在字符串中搜索模式的字符序列。 re模块提供了在python程序中使用正则表达式的支持。如果使用正则表达式时出错, 则re模块会引发异常。

必须导入re模块才能在python中使用正则表达式功能。

import re

正则表达式功能

python中使用了以下正则表达式函数。

SN Function Description
1 match 此方法将字符串中的正则表达式模式与可选标志匹配。如果在字符串中找到匹配项, 则返回true;否则返回false。
2 search 如果在字符串中找到匹配项, 则此方法返回匹配对象。
3 findall 它返回一个列表, 其中包含字符串中某个模式的所有匹配项。
4 split 返回一个列表, 该字符串在每个匹配项中均已拆分。
5 sub 替换字符串中的一个或多个匹配项。

构造正则表达式

可以通过使用元字符, 特殊序列和集合的混合来构造正则表达式。

元字符

元字符是具有指定含义的字符。

Metacharacter Description Example
[] 它代表字符集。 “[a-z]”
\ 它代表特殊的顺序。 “\r”
. 它表示在某个特定位置存在任何字符。 “Ja.v.”
^ 它表示出现在字符串开头的模式。 “^Java”
$ 它表示出现在字符串末尾的模式。 “point”
* 它表示字符串中模式的零次或多次出现。 “hello*”
+ 它代表字符串中一个或多个模式的出现。 “你好+”
{} 指定的模式出现的次数。 “java{2}”
| 它表示存在此字符。 “java|point”
() 捕获并分组

特殊序列

特殊序列是包含\后跟一个字符的序列。

Character Description
\A 如果指定的字符出现在字符串的开头, 则返回匹配项。
\b 如果指定的字符出现在字符串的开头或结尾, 则返回匹配项。
\B 如果指定的字符出现在字符串的开头而不是结尾, 则返回匹配项。
\d 如果字符串包含数字[0-9], 则返回匹配项。
\D 如果字符串不包含数字[0-9], 则返回匹配项。
\s 如果字符串包含任何空格字符, 则返回匹配项。
\S 如果字符串不包含任何空格字符, 则返回匹配项。
\w 如果字符串包含任何单词字符, 则返回匹配项。
\W 如果字符串不包含任何单词, 则返回匹配项。
\Z 如果指定的字符位于字符串的末尾, 则返回匹配项。

套装

一组是在一对方括号内给出的一组字符。它代表特殊含义。

SN Set Description
1 [arn] 如果字符串包含集合中的任何指定字符, 则返回匹配项。
2 [a-n] 如果字符串包含a到n之间的任何字符, 则返回匹配项。
3 [^arn] 如果字符串包含a, r和n以外的字符, 则返回匹配项。
4 [0123] 如果字符串包含任何指定的数字, 则返回匹配项。
5 [0-9] 如果字符串包含0到9之间的任何数字, 则返回匹配项。
6 [0-5][0-9] 如果字符串包含00到59之间的任何数字, 则返回匹配项。
10 [a-zA-Z] 如果字符串包含任何字母(小写或大写), 则返回匹配项。

findall()函数

此方法返回一个列表, 其中包含字符串中某个模式的所有匹配项的列表。它按照找到的顺序返回模式。如果没有匹配项, 则返回一个空列表。

考虑以下示例。

例子

import re

str = "How are you. How is everything"

matches = re.findall("How", str)

print(matches)

print(matches)

输出

['How', 'How']

match对象

匹配对象包含有关搜索和输出的信息。如果找不到匹配项, 则返回None对象。

例子

import re

str = "How are you. How is everything"

matches = re.search("How", str)

print(type(matches))

print(matches) #matches is the search object

输出

<class '_sre.SRE_Match'>
<_sre.SRE_Match object; span=(0, 3), match='How'>

Match对象方法

与Match对象关联的方法有以下几种。

  1. span():返回包含match开始和结束位置的元组。
  2. string():它返回传递给函数的字符串。
  3. group():返回找到匹配项的字符串部分。

例子

import re

str = "How are you. How is everything"

matches = re.search("How", str)

print(matches.span())

print(matches.group())

print(matches.string)

输出

(0, 3)
How
How are you. How is everything
赞(0)
未经允许不得转载:srcmini » Python正则表达式用法详解

评论 抢沙发

评论前必须登录!