Regular_Expression 數字匹配問題
關於數字的匹配
我想要指定檢索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之間的數值
但不知道應該怎麼去寫才對,希望各位老師、同學可以為我解答
回答列表
-
2020/03/08 下午 02:07張晉豪贊同數:0不贊同數:0留言數:2
.要用跳脫自元 \.
-
2020/03/09 上午 00:32張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
嗨,你可以用 {1, 3} 去限定要檢查的位元數。
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃