1. 程式人生 > 其它 >第1章 1.8 引入正則表示式

第1章 1.8 引入正則表示式

一、示例如下:

>>> import re

#匯入正則表示式模組

>>> re.search(r'LOG', 'SOME LOGS')

<re.Match object; span=(5, 8), match='LOG'>

#在字串中查詢'LOG'

>>> re.search(r'^LOG', 'LOGS')

<re.Match object; span=(0, 3), match='LOG'>

#'^'是指查詢'LOG'開頭的字串

>>> re.search(r'^LOG', 'SOME LOGS')

#該模組未找到'LOG'開頭的字串,返回None

>>> re.search(r'LOG$', 'SOME LOGS')

#'$'是指查詢'LOG'結尾的字串,未找到返回None

>>> re.search(r'LOG$', 'SOME LOG')

<re.Match object; span=(5, 8), match='LOG'>

#'$'是指查詢'LOG'結尾的字串

>>> STRING = 'something in the things she shows me'

>>> match = re.search(r'thing', STRING)

#在字串中查詢thing,只取第1個

>>> STRING[:match.start()], STRING[match.start():match.end()], STRING[match.end():]

('some', 'thing', ' in the things she shows me')

#該命令為分別取出匹配前的字串、匹配的字串和匹配後的字條串,其中match.start()為匹配的開始索引、match.end()為匹配的結束索引。

>>> match = re.search(r'\bthing', STRING)

#\b標誌單詞的開頭或者結尾, 其中something不是單詞的開頭,而things是單詞的開頭

>>> STRING[:match.start()], STRING[match.start():match.end()], STRING[match.end():]

('something in the ', 'thing', 's she shows me')

#該命令為分別取出匹配前的字串、匹配的字串和匹配後的字條串

>>> re.search(r'[0123456789-]+', 'the phone number is 1234-567-890')

<re.Match object; span=(20, 32), match='1234-567-890'>

#該命令匹配包含'0'至'9'的資料和'-'符號,即匹配電話號碼

>>> re.search(r'[0123456789-]+', 'the phone number is 1234-567-890').group()

'1234-567-890'

#group()取出匹配的字串

>>> re.search(r'\S+@\S+', 'my email is [email protected]').group()

'[email protected]'

#'\S':標記除空格外的任何字元,包括特殊字元。該模式為提取電子郵件地址,比較嚴格的模式應該為r'([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'

>>> re.search(r'([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)', 'my email is jonhn@[email protected]')

<re.Match object; span=(18, 32), match='[email protected]'>

>>> re.search(r'([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)', 'my email is [email protected]')

<re.Match object; span=(12, 29), match='[email protected]'>

>>> match = re.search(r'[0123456789-]+', 'the phone number is 1234-567-890')

>>> [int(n) for n in match.group().split('-')]

[1234, 567, 890]

#取出電話號碼,然後以'-'分隔,並將生成器轉換為列表。

 

可以使用一些工具互動式地檢查正則表示式。在https://regex101.com可以找到一個免費的線上測試工具。