Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反向查找不否定整个匹配_Python_Regex_Negative Lookbehind - Fatal编程技术网

Python 反向查找不否定整个匹配

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://(或http://实际上,但只是使用https://)开头的主机,我不想捕获它们的主机名,但我确实想捕获任何不以https开头的主机名://

我很难让一个具有负lookback的python正则表达式正常工作。我想匹配主机名,但不想匹配以https://开头的主机名

所以匹配:caller.fls.help.test.com 不是

我创建的正则表达式是:

((?<!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://”开头的主机名……对吗?