编辑:为了更准确地说,主机名可以出现在段落中的任何位置,我想完全丢弃任何以https://开头的主机(或http://实际上,但只是使用https://进行测试),我不想捕获他们的主机名,但我想捕获任何不以https://
开头的主机名我无法使用负面的lookbehind工作的python正则表达式。我想匹配主机名,但不是以https://。
开头匹配:caller.fls.help.test.com 不:https://dont-want.fls.help.test.com
我建立的正则表达式是:
((?<!https:\/\/)([a-zA-Z0-9_-]+?)(\.\w{3})?
(\.help\.test\.com|\.remote\.help\.test\.com))
不幸的是,这仍然与我的例子中的“aller.fls.help.test.com”相匹配。你可以在这里看到:
如何让消极的外观取消整场比赛?谢谢!
答案 0 :(得分:0)
这样做你想要的吗?我锚定了比赛的开始和结束,以便从头到尾考虑整条线。
(\n|^)((?<!https:\/\/)([a-zA-Z0-9_-]+?)(\.\w{3})?(\.help\.test\.com|\.remote\.help\.test\.com))(\n|$)
答案 1 :(得分:0)
如果所有主机都作为单个字符串进入,我建议另一个approch:查看字符串中是否包含“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