python 正則表達式 regex

正則表達式對于字符串的處理非常高效

  • 簡單的使用如下:
  1. import re 導入正則表達式模塊

    • python所有正則表達式的函數(shù)都在re模塊中
  2. re.compile()創(chuàng)建一個Regex對象

  3. Regex對象的search() 方法查找傳入的字符串:

    • 如果字符串中沒有找到該正則表達式的匹配,那么search()將返回None
    • 如果找到了,將返回一個Match對象
  4. 調(diào)用Match對象的group()方法返回匹配的字符串

舉個電話號碼查詢的例子

#導入re模塊
import re

#創(chuàng)建匹配電話號碼的正則表達式對象 `phoneNumRegex `
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d\d\d\d\d')

mo = phoneNumRegex .search('My number is 010-12345678')
if mo is not None:
  print('Number is:' + mo.group())
else:
  print('Not found!')
  • 匹配模式:
符號 意義
\d 表示一個數(shù)字字符,即任何一個0到9的數(shù)字
\D 除0到9的數(shù)字以外的任何數(shù)字
\w 任何字母、數(shù)字或下劃線字符(‘單詞word’)
\W 除字母、數(shù)字或下劃線以外的任何字符
\s 空格、制表符或換行符(‘空白space’)
\S 除空格、制表符或換行符以外的任何字符
. 句點(通配符),匹配除了換行符以外的所有字符
  • 更多匹配方法:

用括號分組 ()

用管道匹配多個分組 |

用問號實現(xiàn)可以選匹配 ?
匹配這個問號之前的分組0次或者1次

用加號實現(xiàn)多次匹配 +
匹配這個問號之前的分組1次或者多次

用星號實現(xiàn)任意次匹配 *
匹配這個問號之前的分組0次或者多次

用花括號實現(xiàn)指定次數(shù)匹配 {}
匹配這個問號之前的分組特定次數(shù)

花括號默認為貪心匹配,即匹配最長的字符串
非貪心匹配需要在花括號后添加問號,{}?

{n}匹配n次前面的分組。
{n,}匹配n次或更多前面的分組。
{,m}匹配零次到m次前面的分組。
{n,m}匹配至少n次、至多m次前面的分組。
{n,m}?或*?或+?對前面的分組進行非貪心匹配。

Carrots(caret) cost dollars.
插入字符 ^ 匹配開始
^spam表示字符串必須以spam開始
美元字符 匹配結(jié)尾 spam表示字符串必須以spam結(jié)束

[abc]匹配方括號內(nèi)的任意字符(諸如a、b或c)。
[^abc]匹配不在方括號內(nèi)的任意字符。

Regex對象的findall() 方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容