❶ 基於python正則表達式提取搜索結果中的站點地址
正則表達式對於Python來說並不是獨有的,最近在把google搜索的結果中所有的站點地址導出,於是想到用python正則表達式提取搜索結果中的站點地址。
這其中涉及幾個需要解決的問題:
1、獲取搜索的結果文本
為了獲得更多的地址,我使用了Google的高級搜索功能,每個頁面顯示100條結果。
獲得顯示的結果後,可以查看源碼,並保持成文本文件就有了搜索的結果文本
2、分析如何提取站點信息
首先需要分析獲取的頁面,查看以怎樣的方式可以提取出站點信息。
我使用IE8自帶的開發工具(按F12就會彈出來)中的探查器功能查看自己要關心的內容有什麼特殊的格式
從上圖可以看出我需要的站點在標簽<cite></cite>中,所以我使用正則表達式提取這其中的文本是否就可以呢?
3、編寫正則表達式來獲取站點地址
接下來的就是寫表達式了,我使用Python3.2編寫的,方便好用(~_~)
代碼如下,先把搜索結果頁面保持到e:/t3.txt中,在執行如下代碼
import
re
p
=
re.compile(r'<cite>([^<>/].+?)</cite>')
f
=
open("e:/t3.txt",
encoding='utf-8')
content
=
f.read()
print
("
".join(p.findall(content)))
運行如下:
大家可以對照一下運行效果圖,看看所有的站點地址是不是都給獲取到了。
❷ 用正則表達式提取網址中的IP怎樣取
d+.d+.d+.d*:d+
import java.util.regex.*;
// 表達式對象
Pattern p = Pattern.compile("\d+\.\d+\.\d+\.\d*\:\d+");
// 創建 Matcher 對象
Matcher m = p.matcher("");
// 是否找到匹配
boolean found = m.find();
if( found )
{
String foundstring = m.group();
int beginPos = m.start();
int endPos = m.end();
}
❸ python的re正則表達式怎麼寫
>>> s="""# server xx-3:80 weight=1 max_fails=2 fail_timeout=10s backup;
server xx:80 weight=1 max_fails=2 fail_timeout=10s;
server yy weight=1 max_fails=2 fail_timeout=10s backup;
server 192.168.1.1 weight=1 max_fails=2 fail_timeout=10s;
server xx:9090 max_fails=2 fail_timeout=10s backup;
server 192.168.1.1 weight=1 max_fails=2 fail_timeout=10s;
"""
>>> import re
>>> re.findall('^[^#\n]*server[ \t]+([^:\s]+)',s,re.M)
['xx', 'yy', '192.168.1.1', 'xx', '192.168.1.1']
>>>
❹ 請教Python中匹配IP的正則表達式
下面是IPv4的IP正則匹配表達式
importre
#簡單的匹配給定的字元串是否是ip地址,下面的例子它不是IPv4的地址,但是它滿足正則表達式
ifre.match(r"^(?:[0-9]{1,3}.){3}[0-9]{1,3}$","272.168,1,1"):
print"IPvaild"
else:
print"IPinvaild"
#精確的匹配給定的字元串是否是IP地址
ifre.match(r"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","223.168.1.1"):
print"IPvaild"
else:
print"IPinvaild"
#簡單的從長文本中提取中提取ip地址
string_ip="isthis289.22.22.22ip?
result=re.findall(r"(?:[0-9]{1,3}.){3}[0-9]{1,3}",string_ip)
ifresult:
printresult
else:
print"recannotfindip"
#精確提取IP
result=re.findall(r"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",string_ip):
ifresult:
printresult
else:
print"recannotfindip"
下面是IPv6的正則匹配表達式
string_IPv6="1050:0:0:0:5:600:300c:326b"
#匹配是否滿足IPv6格式要求,請注意例子里大小寫不敏感
ifre.match(r"^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$",string_IPv6,re.I):
print"IPv6vaild"
else:
print"IPv6invaild"
#提取IPv6,例子里大小寫不敏感
result=re.findall(r"(?<![:.w])(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}(?![:.w])",string_IPv6,re.I)
#列印提取結果
printresult
❺ python 正則表達式.*如何把ip地址提取出來
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importre
html='<bodystyle="margin:0px"><center>您的IP是:[42.120.74.89]來自:浙江省杭州市阿里雲</center></body></html>'
reg=re.compile(r'[(d{1,3}.d{1,3}.d{1,3}.d{1,3})]')
item=re.findall(reg,html)
printitem[0]
❻ python中匹配ip的正則表達式 如果我要匹配192.168.*.*的網段呢 新手求教!!
importre
reg=re.compile(r"(?<![0-9.])((2[0-4][0-9]|25[0-5]|[01]?[0-9]{1,2}).){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9]{1,2})(?![0-9.])")
(?<![0-9.])((2[0-4][0-9]|25[0-5]|[01]?[0-9]{1,2}).){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9]{1,2})(?![0-9.])
從文本中匹配ip的正則表達式
importre(?<![d.])192.168(.(2[0-4]d|25[0-5]|[01]?d{1,2})){2}(?![d.])
reg=re.compile(r"(?<![d.])192.168(.(2[0-4]d|25[0-5]|[01]?d{1,2})){2}(?![d.])")
在文本中匹配 192.168網段的正則表達式
❼ Python正則表達式匹配Ip地址和文件地址
❽ Python正則表達式匹配IP地址的問題
表示非捕獲組,即只匹配這個組裡面的內容,而不會將這個組添加到group中,不佔用group的位置。
❾ 如何檢查一個字元串在python的IP地址模式匹配
是用re模塊。具體代碼如下:
importre
pattern=re.compile(
r"((?:(?:25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(?:25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))))")
x="sljflafja10.10.10.11flksjfklsajf00.00.1xxxx22.222.222.22"
y="fjlsfjla10.10.10.10jkfsjf"
z="10.10.10.10"
a=pattern.findall(x)
b=pattern.findall(y)
c=pattern.findall(z)
ips1=[g[0]forgina]
ips2=[g[0]forginb]
ips3=[g[0]forginc]
printips1
printips2
printips3
輸出結果:
['10.10.10.11','22.222.222.22']
['10.10.10.10']
['10.10.10.10']
主要是IP地址的正則表達式比較復雜,python中的正則表達式使用還是比較簡單的。