仅查找有效 url + 文本 python 的正则表达式

Regex to find valid url + text python only

我有一个正则表达式

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

完美地选择了有效 url。

我有一个场景可以

  1. 有效 URL + TEXT 或(www.abc.com 测试正则表达式)
  2. 文本 + 有效 URL(测试正则表达式 www.abc.com)

需求:

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

问题:

我尝试了很多正则表达式,但它正在选择有效的 url,我也不想要我只想要如果 url 是有效的搜索 url 之外的文本.

没有功能请。我正在尝试使用 Regex 解决此问题。

也许你想要这个:

(.*?)((?:(?: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