我正在使用标记语言处理与 URL 匹配的代码(不必有效),您可以简单地导入 URL,也可以在 [ ] 之间添加它。我给你一些例子:
1- http://en.wikipedia.org/wiki/Main_Page
2-[ http://en.wikipedia.org/wiki/Main_Page Title]
3-[ http://en.wikipedia. org/wiki/(Main_Page) Title]
4-( http://en.wikipedia.org/wiki/Main_Page )
5-[http://en.wikipedia.org/wiki/Main_Page]
我需要三个正则表达式,一个用于括号中的 URL (no. 2,3,5) ,另一个用于不在括号 (1,4) 中的 URL,一个用于所有第一个和第二个的 URL 很容易我做到了:
notInside = '\]\s<>"'
notAtEnd = '\]\s\.:;,<>"\|\)'
regex = r'(?P<url>http[s]?://[^%(notInside)s]*?[^%(notAtEnd)s]' \
r'(?=[%(notAtEnd)s]*\'\')|http[s]?://[^%(notInside)s]*' \
r'[^%(notAtEnd)s])' % {'notInside': notInside, 'notAtEnd': notAtEnd}
但问题从第三个开始,一个 URL 以括号(或除括号外的任何内容)开头,如数字 4,正则表达式不应匹配 URL 末尾的“)”,但有时人们在末尾使用“)” URL 并放在括号中,正则表达式必须匹配这个“)”,如数字 3。我不能为第三个写两个单独的正则表达式并组合结果
另一件事:我将在免费软件代码中发布您的帮助,所以请暗示我可以在 MIT 许可证中发布您的代码。谢谢