Regex和re模組

來源:互聯網
上載者:User

標籤:替代   分行符號   re模組   findall   price   number   正則表達   就是   sub   

re 模組,正則匹配操作Regex常用匹配規則:

    .匹配任一字元,但是不能匹配分行符號

    \d匹配任一數字

    \D匹配任意的非數字

    \s匹配的是空白字元(包括:\n,\t,\r和空格)

    \w匹配的是a-z和A-Z以及數字和底線

    \W匹配的是和\w相反的

    []組合的方式,只要滿足中括弧中的某一項都算匹配成功

    之前講到的幾種匹配規則,其實可以使用中括弧的形式來進行替代:

          \d:[0-9]
         \D:0-9
         \w:[0-9a-zA-Z_]
         \W:[^0-9a-zA-Z_]
匹配多個字元:
  *:可以匹配0或者任意多個字元
  +:可以匹配1個或者多個字元

  ?:匹配的字元可以出現一次或者不出現(0或者1)

  {m}:匹配m個字元

  {m,n}:匹配m-n個字元

  ^(脫字型大小):表示以...開始
  $:表示以...結束
  |:匹配多個運算式或者字串


貪婪模式:Regex會匹配盡量多的字元。預設是貪婪模式。
非貪婪模式:Regex會盡量少的匹配字元。

 

re模組中常用函數:

match:從開始的位置進行匹配。如果開始的位置沒有匹配到。就直接失敗了。

text = ‘hello‘ret = re.match(‘h‘,text)print(ret.group())>> h

 

search:
在字串中找滿足條件的字元。如果找到,就返回。說白了,就是只會找到第一個滿足條件的。

text = ‘apple price $99 orange price $88‘ret = re.search(‘\d+‘,text)print(ret.group())>> 99

 

group 分組:
在Regex中,可以對過濾到的字串進行分組。分組使用圓括弧的方式。

  1. group:和group(0)是等價的,返回的是整個滿足條件的字串。
  2. groups:返回的是裡面的子組。索引從1開始。
  3. group(1):返回的是第一個子組,可以傳入多個。
text = "apple price is $99,orange price is $10"ret = re.search(r".*(\$\d+).*(\$\d+)",text)print(ret.group())print(ret.group(0))print(ret.group(1))print(ret.group(2))print(ret.groups())

 

findall:
找出所有滿足條件的,返回的是一個列表。

text = ‘apple price $99 orange price $88‘ret = re.findall(‘\d+‘,text)print(ret)>> [‘99‘, ‘88‘]

 

sub:
用來替換字串。將匹配到的字串替換為其他字串。

text = ‘apple price $99 orange price $88‘ret = re.sub(‘\d+‘,‘0‘,text)print(ret)>> apple price $0 orange price $0

 

split:
使用Regex來分割字串。

text = "hello world ni hao"ret = re.split(‘\W‘,text)print(ret)>> ["hello","world","ni","hao"]

 

compile:
對於一些經常要用到的Regex,可以使用compile進行編譯,後期再使用的時候可以直接拿過來用,執行效率會更快。

text = "the number is 20.50"r = re.compile(r"""                \d+ # 小數點前面的數字                \.? # 小數點                \d* # 小數點後面的數字                """,re.VERBOSE)ret = re.search(r,text)print(ret.group())

 

Regex和re模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.