Regex 通过正则表达式在标记语言中匹配URL
我正在用标记语言编写一个匹配URL的代码(不必是有效的),您可以简单地导入URL,也可以在[]之间添加它。我举几个例子:Regex 通过正则表达式在标记语言中匹配URL,regex,url,mediawiki,Regex,Url,Mediawiki,我正在用标记语言编写一个匹配URL的代码(不必是有效的),您可以简单地导入URL,也可以在[]之间添加它。我举几个例子: 1- 2-[标题] 3-[标题] 4-() 5-[http://en.wikipedia.org/wiki/Main_Page] 我需要三个正则表达式,一个用于括号中的URL(第2、3、5号),另一个用于不在括号中的URL(1、4),一个用于所有这些 第一个和第二个很简单我做到了: notInside = '\]\s<>"' notAtEnd = '\]\s\.:
1-
2-[标题]
3-[标题]
4-()
5-[http://en.wikipedia.org/wiki/Main_Page]
我需要三个正则表达式,一个用于括号中的URL(第2、3、5号),另一个用于不在括号中的URL(1、4),一个用于所有这些 第一个和第二个很简单我做到了:
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}
notInside='\]\s''
notAtEnd='\]\s\.:;,“\\\\)”
regex=r'(?Phttp[s]?:/[^%(不在内部)s]*?[^%(不在内部)s]'\
r'(?=[%(notAtEnd)s]*\'\')| http[s]?://[^%(notiden)s]*'\
r'[^%(notAtEnd)s])'%{'notInside':notInside,'notAtEnd':notAtEnd}
但问题从第三个开始,一个URL以括号(或除括号以外的任何东西)开始,如数字4,正则表达式不应该匹配URL结尾的“)”但有时人们使用“)”在URL结尾放在括号中,正则表达式必须匹配此“)”如数字3。我不能为第三个单独编写两个正则表达式并合并结果
另一件事:我会用自由软件代码发布你的帮助,所以请暗示我可以在MIT许可证中发布你的代码。谢谢描述
该正则表达式将:
- 匹配方括号、圆括号和无括号内的字符串URL
- 将在不同的捕获组中捕获每种类型的括号内匹配
例子
实例:
示例文本
1-http://1en.wikipedia.org/wiki/Main_Page
2-[http://2en.wikipedia.org/wiki/Main_Page Title]
3-[http://3en.wikipedia.org/wiki/(Main_Page) Title]
4-(http://4en.wikipedia.org/wiki/Main_Page)
5-[http://5en.wikipedia.org/wiki/Main_Page]
匹配
[0][0] = http://1en.wikipedia.org/wiki/Main_Page
[0][1] =
[0][2] =
[0][3] = http://1en.wikipedia.org/wiki/Main_Page
[1][0] = [http://2en.wikipedia.org/wiki/Main_Page Title]
[1][1] = http://2en.wikipedia.org/wiki/Main_Page Title
[1][2] =
[1][3] =
[2][0] = [http://3en.wikipedia.org/wiki/(Main_Page) Title]
[2][1] = http://3en.wikipedia.org/wiki/(Main_Page) Title
[2][2] =
[2][3] =
[3][0] = (http://4en.wikipedia.org/wiki/Main_Page)
[3][1] =
[3][2] = http://4en.wikipedia.org/wiki/Main_Page
[3][3] =
[4][0] = [http://5en.wikipedia.org/wiki/Main_Page]
[4][1] = http://5en.wikipedia.org/wiki/Main_Page
[4][2] =
[4][3] =
可供替代的
我不确定lookbehinds在media wiki中的效果如何,但你可以试试这个
(?我尝试了替代正则表达式,但它仍然匹配标记文件中的右括号,其中链接以方括号和圆括号的格式写入。示例:您可以通过许多在线正则表达式编辑器中的一个提供示例,如。我怀疑您没有包括此正则表达式工作所需的“http://”。