Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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_Markdown - Fatal编程技术网

python正则表达式无法识别降价链接

python正则表达式无法识别降价链接,python,regex,markdown,Python,Regex,Markdown,我试图用python编写一个正则表达式,以在标记文本字符串中查找URL。 一旦找到url,我想检查它是否由标记链接包装:text 我对后者有意见。我正在使用regex-link\u exp-进行搜索,但结果并不是我所期望的,我无法理解它 这可能是我没有看到的简单的事情 下面是link_exp regex的代码和解释 我得到的输出仅为: http\:\/\/en\.wikipedia\.org\/wiki\/Vocoder 这意味着表达式只查找在右括号前有空格的链接。 这不仅是我想要的,而且

我试图用python编写一个正则表达式,以在标记文本字符串中查找URL。 一旦找到url,我想检查它是否由标记链接包装:text 我对后者有意见。我正在使用regex-link\u exp-进行搜索,但结果并不是我所期望的,我无法理解它

这可能是我没有看到的简单的事情

下面是link_exp regex的代码和解释

我得到的输出仅为:

http\:\/\/en\.wikipedia\.org\/wiki\/Vocoder
这意味着表达式只查找在右括号前有空格的链接。 这不仅是我想要的,而且只有一个没有空格的案例链接应该被考虑

你觉得你能在这件事上帮我吗?

干杯

这里的问题是您的正则表达式首先要拉出URL,它包括
。这意味着您要查找两次右括号。这适用于除第一个以外的所有情况(节省空间)

我不太清楚URL正则表达式的每一部分都在尝试做什么,但下面的部分说:
[$-\@.&+]
,包括从
$
(ASCII 36)到
(ASCII 137)的范围,其中包括大量您可能不是指的字符,包括

与其查找URL,然后检查它们是否在链接中,为什么不同时查找两者?这样,您的URL正则表达式可能会更懒惰,因为额外的约束使它不太可能是任何其他内容:

# Anything that isn't a square closing bracket
name_regex = "[^]]+"
# http:// or https:// followed by anything but a closing paren
url_regex = "http[s]?://[^)]+"

markup_regex = '\[({0})]\(\s*({1})\s*\)'.format(name_regex, url_regex)

for match in re.findall(markup_regex, text):
    print match
结果:

('Vocoder', 'http://en.wikipedia.org/wiki/Vocoder ')
('Turing', 'http://en.wikipedia.org/wiki/Alan_Turing')
('Autotune', 'http://en.wikipedia.org/wiki/Autotune')

如果需要更加严格,您可能可以改进URL正则表达式。

Sidenote,您可以通过指定
re.VERBOSE
,在正则表达式内部添加注释。谢谢@Jon Betts它起作用了!简单的url正则表达式比我以前使用的非常复杂、难以理解的表达式更有意义。@Castro先生,你的代码太棒了。你能按照我的要求修改它以改变标记文件中的链接吗?提前感谢,,
('Vocoder', 'http://en.wikipedia.org/wiki/Vocoder ')
('Turing', 'http://en.wikipedia.org/wiki/Alan_Turing')
('Autotune', 'http://en.wikipedia.org/wiki/Autotune')