logo
Loading...

regex正規化取值問題 - Cupoy

您好,我對於這個章節還是有很多不懂的地方比如作業中regex = '[01]?[0-9]?[0-9]...

pycrawler,pycrawler-d11

regex正規化取值問題

2019/12/12 下午 08:25
Python網路爬蟲討論版
葉碩涵
觀看數:5
回答數:2
收藏數:1
pycrawler
pycrawler-d11

您好,我對於這個章節還是有很多不懂的地方

比如作業中

regex = '[01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]'

test_string0 = "216"

RegexMatchingTest(regex, test_string0) 

匹配結果=21

6不見了


但是

regex = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'

test_string1 = "Test IP 216.58.200.227"

RegexMatchingTest(regex, test_string1)

匹配結果=216.58.200.22

6又出現了,最後一個數字7不見了。


想請問原因是什麼

回答列表

  • 2019/12/13 下午 05:09
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:1

    先看第一個例子:


    regex = '[01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]'


    => 這邊的檢查可以拆成三段:


    (1) [01]?[0-9]?[0-9]

    (2) 2[0-4][0-9]

    (3) 25[0-5]



    所以,這個 "216" 應該是第二個條件而且會符合才對,可以貼上你的程式碼?

  • 2019/12/15 下午 06:18
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    您好, https://github.com/yehbi/1st-PyCrawlerMarathon/blob/master/homework/Day_011_Regular_Expression_HW.ipynb  是位於In[10]的地方


    => 嗨, 因為 21 符合第一個條件「[01]?[0-9]?[0-9]」,他就沒有檢查 第二個條件了。