logo
Loading...

Regular_Expression 數字匹配問題 - Cupoy

關於數字的匹配我想要指定檢索0~255.0~255.0~255.0~255  這樣的組合就是說如果他...

Regular_Expression 數字匹配問題

2020/03/07 06:54 PM
Python網路爬蟲論壇
賴文修
觀看數:0
回答數:2
收藏數:0

關於數字的匹配


我想要指定檢索0~255.0~255.0~255.0~255  這樣的組合

就是說如果他的數字是以999.888.777.666出現的話就會忽略掉


================================================

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



test_string1 = "Test IP 216.58.200.227"

RegexMatchingTest(regex, test_string1)  #測試表達式是否會匹配此合法IP


test_string2 = "Test IP 999.888.777.666"

RegexMatchingTest(regex, test_string2)  #測試表達式是否會匹配此不合法IP


===============================================

結果:


Matched: 216.58.200.227
 group(0): 216.58.200.227
 group(1): 216
 group(2): 58
 group(3): 200
 group(4): 227
Matched: 999.888
 group(0): 999.888
 group(1): 9
 group(2): 9
 group(3): 8
 group(4): 8

================================================


我是用這樣的方法


2[0-4][0-9]|只找200~249以內的數字 或

25[0-5]|只找250~255以內的數字 或

[1-9]\d|只找10~99以內的數字 或

\d|只找0~9以內的數字


理應該匹配出指定的數值


但是他在匹配的過程中,比方說999

他會忽略第1個9,

然後判斷後面2個99時為符合[1-9]\d這樣


導致他在MATCH的過程中出現匹配成功


因為我想要他只搜尋到0~255之間的數值

但不知道應該怎麼去寫才對,希望各位老師、同學可以為我解答