不否定整个匹配

2024-10-03 06:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:更确切地说,主机名可以出现在一个段落中的任何地方,我想完全放弃任何以https://(或http://实际上,但只是用https://)开头的主机,我不想捕获它们的主机名,但我确实想捕获任何不以https://开头的主机名

我很难让一个具有负lookback的python正则表达式工作。我想匹配主机名,但不是从https://。你知道吗

所以匹配:caller.fls.帮助.测试网站 不是https://dont-want.fls.help.test.com

我构建的正则表达式是:

((?<!https:\/\/)([a-zA-Z0-9_-]+?)(\.\w{3})?
(\.help\.test\.com|\.remote\.help\.test\.com))

不幸的是,这仍然匹配“aller.fls.帮助.测试网站“以我为例。你可以在这里看到:

enter image description here

我怎样才能让消极的回头看否定整个比赛?谢谢!你知道吗


Tags: httpstestcomhttp编辑网站地方help
2条回答

这是你想要的吗?我锚定了比赛的开始和结束,以便它从头到尾考虑整个路线。你知道吗

(\n|^)((?<!https:\/\/)([a-zA-Z0-9_-]+?)(\.\w{3})?(\.help\.test\.com|\.remote\.help\.test\.com))(\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

相关问题 更多 >