Python,关于正则表达式中findall()问题。自学Python,碰到这个例子想了好久
问题描述:
对一个IP地址的匹配字符串。
自己的想法是,[1-9]{1,3}匹配其中的'127',(.[0-9]{1,3}){3}匹配后面的‘.0.0.1’
但如果采用r'[1-9]{1,3}.[0-9].[0-9].[0-9]'就能匹配到‘127.0.0.1’
不知道为什么输出会多出一个‘.1‘
希望能得到解答
网友观点:
应该是这样进行匹配
1 2 3 4 5 |
<span>import</span> re <span>ip</span> ='<span>192.168.1.1</span>' <span>trueIp</span> =re.search(r'(([<span>01</span>]{<!-- --><span>0</span>,<span>1</span>}\\d{<!-- --><span>0</span>,<span>1</span>}\\d|<span>2</span>[<span>0</span>-<span>4</span>]\\d|<span>25</span>[<span>0</span>-<span>5</span>])\\.){<!-- --><span>3</span>}([<span>01</span>]{<!-- --><span>0</span>,<span>1</span>}\\d{<!-- --><span>0</span>,<span>1</span>}\\d|<span>2</span>[<span>0</span>-<span>4</span>]\\d|<span>25</span>[<span>0</span>-<span>5</span>])',ip) <span>print</span>(trueIp) |
而findall这个函数
1 2 |
<span><span>findall</span><span>(string[, pos[, endpos]])</span></span> |
是在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
string : 待匹配的字符串。
pos : 可选参数,指定字符串的起始位置,默认为 0。
endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
1 2 3 4 5 6 7 |
<span>>>></span> <span>str1 = <span>'127.0.0.1 192.168.1.1 256.256.0.0'</span></span> <span>>>></span> <span>pattern = re.<span>compile</span>(<span>r"((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))"</span>)</span> <span>>>></span> <span>pattern.findall(str1)</span> ['127.0.0.1', '192.168.1.1'] <span>>>></span> |
127.0.0.1
正则应该这样写,连续数组\\d+, 后面是有规律的.\\d+......, 重复需要用分组,由于分组用(),所以要强调非捕获组?:,
所以完整正则为:
import re
regex = r"\\d+(?:.\\d+)+"
test_str = ("127.0.0.1\\n"
"133.5.7.8")
regexp = re.compile(regex)
MT = regexp.findall(test_str)
print(MT)
------输出如下:
['127.0.0.1', '133.5.7.8']**
Python正则表达式问题?
常用的正则表达式元字符
元字符 | 含义 |
---|---|
. | 匹配任意一个字符 |
\\d | 一个数字 |
\\w | 可以组成word的一个字母 |
+ | 次数>=1 |
? | 次数==1 |
* | 次数>=0 |
例。下面是学校的介绍信息,其中包含了电话号码,利用正则表达式可以很容易从这些字符中提取电话号码。
由于网站搬家,部分链接失效,如无法下载,请联系站长!谢谢支持!
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » Python,关于正则表达式中findall()问题。自学Python,碰到这个例子想了好久
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » Python,关于正则表达式中findall()问题。自学Python,碰到这个例子想了好久