Python 正規表現 re モジュールの概要

高洛峰
リリース: 2017-03-17 17:44:05
オリジナル
1323 人が閲覧しました

</p>

はじめに

正規表現(正規表現)は、テキストの断片を一致させることができるパターンです。最も単純な正規表現は、それ自体と一致する通常の string です。たとえば、正規表現「hello」は文字列「hello」と一致します。 </p>

正規表現はプログラムではなく、文字列を処理するためのパターンであることに注意してください。これを使用して文字列を処理したい場合は、Linux awk、sed、grep などの正規表現をサポートするツールを使用する必要があります。 、またはプログラミング言語 PerlPython、Java など。 </p>

正規表現にはさまざまな種類があり、以下の表に、Python や Perl などのプログラミング言語に適用されるものをリストします。メタ文字の説明を示します: </p>

Python 正規表現 re モジュールの概要</p>

モジュール

Python では、正規表現組み込みの re モジュールを使用して式を使用できます。 </p>

特別な注意が必要な点の 1 つは、正規表現 の使用が 文字  对特殊字符进行转义,比如,为了匹配字符串 ‘python.org’,我们需要使用正则表达式 'python.org',而 Python 的字符串本身也用  转义,所以上面的正则表达式在 Python 中应该写成 'python\.org',这会很容易陷入  的困扰中,因此,我们建议使用 Python 的原始字符串,只需加一个 r 前缀,上面的正则表达式可以写成:</p>

r&#39;python\.org&#39;
ログイン後にコピー

re 模块提供了不少有用的函数,用以匹配字符串,比如:</p>

  • compile 函数</p>

  • match 函数</p>

  • search 函数</p>

  • findall 函数</p>

  • finditer 函数</p>

  • split 函数</p>

  • sub 函数</p>

  • subn 函数</p>

re 模块的一般使用步骤如下:</p>

  • 使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象</p>

  • 通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个 Match 对象)</p>

  • 最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作</p>

compile 函数

compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下:</p>

re.compile(pattern[, flag])
ログイン後にコピー

其中,pattern 是一个字符串形式的正则表达式,flag 是一个可选参数,表示匹配模式,比如忽略大小写,多行模式等。</p>

下面,让我们看看例子。</p>

import re

# 将正则表达式编译成 Pattern 对象 
pattern = re.compile(r&#39;\d+&#39;)
ログイン後にコピー

在上面,我们已将一个正则表达式编译成 Pattern 对象,接下来,我们就可以利用 pattern 的一系列方法对文本进行匹配查找了。Pattern 对象的一些常用方法主要有:</p>

  • match 方法</p>

  • search 方法</p>

  • findall 方法</p>

  • finditer 方法</p>

  • split 方法</p>

  • sub 方法</p>

  • subn 方法</p>

match 方法

match 方法用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。它的一般使用形式如下:</p>

match(string[, pos[, endpos]])
ログイン後にコピー
ログイン後にコピー

其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。因此,当你不指定 pos 和 endpos 时,match 方法默认匹配字符串的头部。</p>

当匹配成功时,返回一个 Match 对象,如果没有匹配上,则返回 None。</p>

看看例子。</p>

>>> import re
>>> pattern = re.compile(r&#39;\d+&#39;)                    # 用于匹配至少一个数字
>>> m = pattern.match(&#39;one12twothree34four&#39;)        # 查找头部,没有匹配
>>> print m
None
>>> m = pattern.match(&#39;one12twothree34four&#39;, 2, 10) # 从&#39;e&#39;的位置开始匹配,没有匹配
>>> print m
None
>>> m = pattern.match(&#39;one12twothree34four&#39;, 3, 10) # 从&#39;1&#39;的位置开始匹配,正好匹配
>>> print m                                         # 返回一个 Match 对象
<_sre.SRE_Match object at 0x10a42aac0>
>>> m.group(0)   # 可省略 0
&#39;12&#39;
>>> m.start(0)   # 可省略 0
3
>>> m.end(0)     # 可省略 0
5
>>> m.span(0)    # 可省略 0
(3, 5)
ログイン後にコピー

在上面,当匹配成功时返回一个 Match 对象,其中:</p>

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート