Python正则表达式-匹配url第二部分

Python正则表达式-匹配url第二部分,python,regex,Python,Regex,嗯。我从(仅WWW链接,第二版)获得regexp。一切都很好,除了一件事,它也解析BB代码 Regexp (?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'"

嗯。我从(仅WWW链接,第二版)获得regexp。一切都很好,除了一件事,它也解析BB代码

Regexp

(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
(?i)/b((?:https?:/)(?:[^\s()]+)*)+(?:([^\s())+)+(([^\s())+)*)+(([^\s())+)+([^\s())+([^\s())+(([^\s())+)+(?:(([^\s()+)+)(^\s())+)+(^-+)+)+(^-+)+(^-+)+(^-+)+(^-+)+)+(^-+)*)+(^-(^-+)+)+)+(^-(^-+)+)+)+(^-(^-)+)+)+)+(^-(^-)+)+(^-(^-)+)+)+)+
什么失败了

[img]http://example.foo/something.png[/img]


当我应用regexp时,我得到http://example.foo/something.png[/img,这是失败的。:P有任何regexp专家吗?

这有点粗糙,但试试这个:

$preg = "%(?:https?://|www\d{0,3}.)(?:[\/A-Za-z0-9-_.]+(?!(?:<|\[/([A-Za-z0-9])+?\1)))%";

$preg=“%(?:https?:///www\d{0,3}.)(?:[\/A-Za-z0-9-\.]+(?!(?:你的意思是你想增加它接受由“[img]”标记包围的URL的能力吗?也就是说,“[img]有效,但”[img]失败?没错。我正在解析用户输入。有时他们使用BB代码。我想获得所有链接(“裸体”(没有BB代码)并用BB代码包围).Edit:而且regexp匹配太多,而不是。嗯,
[
]
是保留字符,在URI中是允许的。我会首先使用BBCode库解析BBCode,然后使用正则表达式查找URL,否则如果拒绝方括号,则可能会拒绝有效的URI。尽管如此,方括号似乎只在URI中的某些位置有效,并且可能是无效的可以按照您的建议重新编写正则表达式(请参阅)…我按照您的建议做了。BB代码条->匹配所有链接,迭代它们并更改原始值。效果很好。:)