regex正規化取值問題
您好,我對於這個章節還是有很多不懂的地方
比如作業中
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]」,他就沒有檢查 第二個條件了。