在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.compile。在文檔中找不到Perl的i后綴(例如m/test/i)。
3 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
傳遞re.IGNORECASE到flags的PARAM search,match或sub:
re.search('test', 'TeSt', re.IGNORECASE)
re.match('test', 'TeSt', re.IGNORECASE)
re.sub('test', 'xxxx', 'Testing', flags=re.IGNORECASE)

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
您還可以使用不帶IGNORECASE標志的搜索/匹配執行不區分大小寫的搜索(在Python 2.7.3中進行了測試):
re.search(r'(?i)test', 'TeSt').group() ## returns 'TeSt'
re.match(r'(?i)test', 'TeSt').group() ## returns 'TeSt'

郎朗坤
TA貢獻1921條經驗 獲得超9個贊
不區分大小寫的標記(?i)可以直接合并到regex模式中:
>>> import re
>>> s = 'This is one Test, another TEST, and another test.'
>>> re.findall('(?i)test', s)
['Test', 'TEST', 'test']
- 3 回答
- 0 關注
- 496 瀏覽
添加回答
舉報
0/150
提交
取消