正则表达式只能找到有效的url + text python

时间:2015-09-08 06:17:26

标签: python regex validation url expression

我有正则表达式

((http\://|https\://|ftp\://)|(www.)|([a-zA-Z0-9\.-]))+(([a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}))(/[a-zA-Z0-9%:/-_\?\.'~#-]*)? 

正在完美地选择有效的网址。

我有一个可以有

的场景
  1. 有效网址+文字或(www.abc.com测试正则表达式)
  2. 文字+有效网址(测试正则表达式www.abc.com)
  3. REQ:

    我想要的是首先正则表达式检查有效的URL然后如果url有效它忽略有效的URL并且只在有效URL之外搜索TEXT。

    的问题:

    我尝试了很多正则表达式,但它也选择了有效的网址,我不希望我只想要网址有效搜索网址外的文字。

    没有功能请。我正在尝试使用正则表达式修复此问题。

1 个答案:

答案 0 :(得分:0)

也许你想要这个:

(.*?)((?:(?:http\:\/\/|https\:\/\/|ftp\:\/\/)|(?:www.)|(?:[a-zA-Z0-9\.-]))+(?:(?:[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}))(?:\/[a-zA-Z0-9%:\/-_\?\.'~#-]*)?)(.*)

请在此处查看demo

您将获得三个组,您可以使用命名组来捕获beforeUrl文本,UrlafterUrl文本,这将是这样的:

(?<beforeUrl>.*?)(?<Url>(?:(?:http\:\/\/|https\:\/\/|ftp\:\/\/)|(?:www.)|(?:[a-zA-Z0-9\.-]))+(?:(?:[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}))(?:\/[a-zA-Z0-9%:\/-_\?\.'~#-]*)?)(?<afterUrl>.*)

请在此处查看demo