首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python 匹配url正则表达式解决方法

2012-03-13 
python 匹配url正则表达式我现在有一个这样的字符串str1http://hi.baidu.com/rubylang/blog/item/1661ad

python 匹配url正则表达式
我现在有一个这样的字符串str1="http://hi.baidu.com/rubylang/blog/item/1661ad50d600c46784352445.html#/html/body/table[1]/tr/td"
怎么写一个表达式来匹配它,需要python语言,并且能够把
http://hi.baidu.com/rubylang/blog/item/1661ad50d600c46784352445.html,跟/html/body/table[1]/tr/td提取出来,
放到两个变量里,url地址不一定就上面那个,可以是其他的url地址,后面的也不一定只是一个table,或者一个也没有,
也可能有很多个
就是要匹配
str2="url地址#/html/.../.../"这样的情况,麻烦各位大侠帮忙,急用,thx

[解决办法]

探讨
引用:
Python codeimport re
string1=''
string2=''
p= re.compile(r'^(https?://\w+(?:\.[^\.]+)+(?:/.+)*/.+\.html)?#?((?:/[^/]+)*)$')
result1= p.findall(string1)
result2= p.findall(string2)

这个如果我的str='http://topic.csdn.net/u/20100119/10/214eb092-9fed-4a54-b6d2-1373b2bc40e8.html?seed=1976536804&r=62857463#replyachor',这样就会出错了,正像13楼说的一样,url中含有#字符就会出问题,不知道要怎么才能处理好
我主要是想区分两种字符串,一种是string1中不含有url地址的,一种string2中含有url地址,
就是string1='/html/.../.../..',另外就是string2='url地址#/html/..../.../../../..),如果分隔符#实在不行的话可以换成其他不会引起错误的字符,#的作用只是用来分割url地址跟后面那一块。麻烦帮忙解决一下,thx

[解决办法]
Python code
import rep = re.compile(r'^(https?://\w+(?:\.[^\.]+)+(?:/.+)*/.+\.html' \    '\??(?:[^/]+=[^/]+)?(?:&[^/]+=[^/]+)*)?#?((?:/[^/]+)*)$')string = 'http://topic.csdn.net/u/20100119/10/214eb092-9fed-4a54' \    '-b6d2-1373b2bc40e8.html?seed=1976536804&r=62857463#replyachor'p.findall(string)#返回结果[('http://topic.csdn.net/u/20100119/10/214eb092-9fed-4a54-b6d2' \    '-1373b2bc40e8.html?seed=1976536804&r=62857463#replyachor', '')] 

热点排行