首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找MediaWiki标记链接内容的Python

查找MediaWiki标记链接内容的Python
EN

Stack Overflow用户
提问于 2009-05-01 01:11:52
回答 4查看 1.1K关注 0票数 3

如果我有一些xml,其中包含了如下的mediawiki标记:

“...collected在12世纪,其中[亚历山大大帝]是英雄,他在其中被代表,有点像英国人[亚瑟王亚瑟]

什么才是合适的论据,比如:

re.findall([[__?__]], article_entry)

在转义双方括号并获得文本的适当链接(如:[[Alexander of Paris|poet named Alexander]] )时,我遇到了一点挫折。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-01 01:20:08

下面是一个例子

代码语言:javascript
复制
import re

pattern = re.compile(r"\[\[([\w \|]+)\]\]")
text = "blah blah [[Alexander of Paris|poet named Alexander]] bldfkas"
results = pattern.findall(text)

output = []
for link in results:
    output.append(link.split("|")[0])

# outputs ['Alexander of Paris']

版本2将更多的内容放入regex中,但结果是更改了输出:

代码语言:javascript
复制
import re

pattern = re.compile(r"\[\[([\w ]+)(\|[\w ]+)?\]\]")
text = "[[a|b]] fdkjf [[c|d]] fjdsj [[efg]]"
results = pattern.findall(text)

# outputs [('a', '|b'), ('c', '|d'), ('efg', '')]

print [link[0] for link in results]

# outputs ['a', 'c', 'efg']

第3版,如果您只希望链接没有标题。

代码语言:javascript
复制
pattern = re.compile(r"\[\[([\w ]+)(?:\|[\w ]+)?\]\]")
text = "[[a|b]] fdkjf [[c|d]] fjdsj [[efg]]"
results = pattern.findall(text)

# outputs ['a', 'c', 'efg']
票数 5
EN

Stack Overflow用户

发布于 2009-05-01 01:52:23

RegExp: \w+( \w+)+(?=)])

输入

[巴黎亚历山大诗人亚历山大]

输出

亚历山大诗人

输入

[巴黎亚历山大]

输出

巴黎的亚历山大

票数 1
EN

Stack Overflow用户

发布于 2009-05-01 01:57:28

代码语言:javascript
复制
import re
pattern = re.compile(r"\[\[([\w ]+)(?:\||\]\])")
text = "of which [[Alexander the Great]] was somewhat like [[King Arthur|Arthur]]"
results = pattern.findall(text)
print results

会给出输出

代码语言:javascript
复制
["Alexander the Great", "King Arthur"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/809837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档