Python 反向查找不否定整个匹配
编辑:更准确地说,主机名可能出现在一段中的任何地方,我想完全放弃以https://(或http://实际上,但只是使用https://)开头的主机,我不想捕获它们的主机名,但我确实想捕获任何不以https开头的主机名:// 我很难让一个具有负lookback的python正则表达式正常工作。我想匹配主机名,但不想匹配以https://开头的主机名 所以匹配:caller.fls.help.test.com 不是: 我创建的正则表达式是:Python 反向查找不否定整个匹配,python,regex,negative-lookbehind,Python,Regex,Negative Lookbehind,编辑:更准确地说,主机名可能出现在一段中的任何地方,我想完全放弃以https://(或http://实际上,但只是使用https://)开头的主机,我不想捕获它们的主机名,但我确实想捕获任何不以https开头的主机名:// 我很难让一个具有负lookback的python正则表达式正常工作。我想匹配主机名,但不想匹配以https://开头的主机名 所以匹配:caller.fls.help.test.com 不是: 我创建的正则表达式是: ((?<!https:\/\/)([a-zA-Z0-
((?<!https:\/\/)([a-zA-Z0-9_-]+?)(\.\w{3})?
(\.help\.test\.com|\.remote\.help\.test\.com))
(?
不幸的是,这仍然与我的示例中的“aller.fls.help.test.com”匹配。您可以在这里看到:
我如何使反向后仰否定整个比赛?谢谢!这符合你的要求吗?我锚定了比赛的开始和结束,以便它从头到尾考虑整条线
(\n|^)((?<!https:\/\/)([a-zA-Z0-9_-]+?)(\.\w{3})?(\.help\.test\.com|\.remote\.help\.test\.com))(\n|$)
(\n |^)((?如果所有主机都以单个字符串的形式出现,我建议使用另一种方法:查看字符串中是否包含“https”-如果不包含,请比较主机名
它看起来是这样的:
hosts = ['caller.fls.help.test.com','https://caller.fls.help.test.com']
for host in hosts:
if 'https' not in host:
#Your match-regex
你必须使用负向后看吗?你不能使用负向前看吗?^(?)(?:https))(.*)$不要浪费时间在正则表达式上:使用。为了澄清,你想匹配的主机名只是主机名,或者是以“http://”开头但不是以“https://”开头的主机名……对吗?