Regex 将字符串与可变位置的固定子字符串匹配

Regex 将字符串与可变位置的固定子字符串匹配,regex,expression,Regex,Expression,在那里: 我想在我的电子邮件服务器中创建一个过滤器,匹配来自某个域(比如domain.org)的包含任何URL(使用http或https协议)的任何邮件。我希望它与以下内容相匹配: 这里的问题是,这些字符串可以包装在消息体中字符串的任意随机位置。更糟糕的是,当字符串被包装时,在行尾之前会添加一个等号,因此我需要它能够匹配如下字符串: ht= tps://thisisanexample.domain.org https://thisisane= example.domain.org ht

在那里:

我想在我的电子邮件服务器中创建一个过滤器,匹配来自某个域(比如domain.org)的包含任何URL(使用http或https协议)的任何邮件。我希望它与以下内容相匹配:

这里的问题是,这些字符串可以包装在消息体中字符串的任意随机位置。更糟糕的是,当字符串被包装时,在行尾之前会添加一个等号,因此我需要它能够匹配如下字符串:

ht=
tps://thisisanexample.domain.org

https://thisisane=
example.domain.org

https://thisisanexample.do=
main.org

我提出了一个简单(但巨大)的解决方案,但我认为肯定有一个比我更优雅的解决方案:

/h[=[:cntrl:]]*t[=[:cntrl:]]*t[=[:cntrl:]]*p[=[:cntrl:]]*s?[=[:cntrl:]]*:[=[:cntrl:]]*\/[=[:cntrl:]]*\/[=[:cntrl:]]*[-+_@&%$#|()=?¿:;,.,çÇ^[:cntrl:][:alnum:]\[\]\{\}\*\\]*[=[:cntrl:]]*.[=[:cntrl:]]*d[=[:cntrl:]]*o[=[:cntrl:]]*m[=[:cntrl:]]*a[=[:cntrl:]]*[=[:cntrl:]]*i[=[:cntrl:]]*n[=[:cntrl:]]*.[=[:cntrl:]]*o[=[:cntrl:]]*r[=[:cntrl:]]*g/
我一直在四处寻找,但由于我对正则表达式的了解并不仅仅限于简单的查询,因此我找不到任何我理解的可以改进我的解决方案的东西

事先非常感谢。 问候


2018/04/11编辑:感谢所有尝试过的人,但提出的解决方案不符合我所期望的优雅性和可读性要求。我在寻找一些东西,比如捕获除相等返回字符串以外的所有内容,并对第一次搜索的捕获结果执行web地址字符串搜索。这是一个可行的想法吗?

如果你可以设置单行,
*?
可以用一些精度的损失来代替
[=[:cntrl:]*
,当它在字符串中的任何地方得到一个
=
符号时,接下来的字符串会转到下一行吗?兰斯,我不想在这里失去精度。我将根据这个正则表达式删除邮件消息,所以越精确,越简单better@ankush-rathi,
=
符号可以出现在整个文本中的任何地方,但我想匹配与新行符号一起出现的符号(以CR、LF、CRLF等为准)。A可以帮助缩短正则表达式,如
(?(DEFINE)(?'s'[=[:cntrl:]*))h(?1)t(?1)t(?1)p(?1)s