455

Python では、以下を使用して大文字と小文字を区別しないように正規表現をコンパイルできますre.compile

>>> s = 'TeSt'
>>> casesensitive = re.compile('test')
>>> ignorecase = re.compile('test', re.IGNORECASE)
>>> 
>>> print casesensitive.match(s)
None
>>> print ignorecase.match(s)
<_sre.SRE_Match object at 0x02F0B608>

同じことをする方法はありますかre.compileiドキュメントに Perl のサフィックス (例: )のようなものが見つかりませんm/test/i

4

9 に答える 9

728

、、またはre.IGNORECASEflagsパラメータに渡します:searchmatchsub

re.search('test', 'TeSt', re.IGNORECASE)
re.match('test', 'TeSt', re.IGNORECASE)
re.sub('test', 'xxxx', 'Testing', flags=re.IGNORECASE)
于 2009-02-01T14:01:10.040 に答える
128

IGNORECASE フラグなしで search/match を使用して、大文字と小文字を区別しない検索を実行することもできます (Python 2.7.3 でテスト済み)。

re.search(r'(?i)test', 'TeSt').group()    ## returns 'TeSt'
re.match(r'(?i)test', 'TeSt').group()     ## returns 'TeSt'
于 2012-05-04T07:05:38.797 に答える
19

パターンのコンパイル中に大文字と小文字を区別しないように定義することもできます。

pattern = re.compile('FIle:/+(.*)', re.IGNORECASE)
于 2014-05-12T15:26:30.893 に答える
9

輸入品では

import re

実行時処理:

RE_TEST = r'test'
if re.match(RE_TEST, 'TeSt', re.IGNORECASE):

re.compile使わないのはもったいないので注意。上記の match メソッドが呼び出されるたびに、正規表現がコンパイルされます。これは、他のプログラミング言語でも間違ったやり方です。以下はより良い方法です。

アプリの初期化中:

self.RE_TEST = re.compile('test', re.IGNORECASE)

実行時処理:

if self.RE_TEST.match('TeSt'):
于 2017-06-01T03:34:40.797 に答える