我有一个正则表达式来从类似wiki的页面中提取链接:
for mo in re finditer(r"\[\[([^|\]]+)(|([^\]]+))?\]\]", page):
(wiki链接看起来像[[link target]]
或[[link target|text]]
匹配没问题,但是,我无法找到从第二部分的子组中获得text
的方法:[[(…)(|(I need the contents of this group))?]]
这样一个链接的mo.groups()
的返回值如下(第一行是匹配的输入):
我希望第三个元素是Admins
,而不是|Admins
。在
我知道我可以简单地切掉管道字符(实际上这就是我现在正在做的),但是有没有一种re
的方法来完成这个操作呢?在
(我使用的是python3.4.1)
将|放入非捕获组:
正如阿维纳什指出的,逃离|,结果将是:
^{pr2}$您只需要转义中间的
|
符号,这样它就可以匹配文本|
符号,否则它将执行regex或操作。|
在character类中,它将失去它的特殊含义,只匹配文本|
符号。但是character类之外的未转义的|
符号的作用类似于alternation operator。在DEMO
^{pr2}$相关问题 更多 >
编程相关推荐