我需要在Wikinews xml文件的文本字段中显示内部链接。
在我的情况下,这些有两种格式
[[w:President of the People's Republic of China|President]]
[[People's Republic of China]]
我应用了这些正则表达式
internalLinks = Pattern.compile("\\[\\[w:([^|:]+)\\|.*\\]\\]").matcher(internalLinks).replaceAll("##en.wikipedia.org/wiki/$1##");
internalLinks = Pattern.compile("\\[\\[([^:|]+)\\]\\]").matcher(internalLinks).replaceAll("[[[en.wikinews.org/wiki/$1]]]");
Pattern pattern = Pattern.compile("\\[\\[\\[(.*?)\\]\\]\\]");
Matcher matcher = pattern.matcher(internalLinks);
while (matcher.find())
{
interLinks += matcher.group(1)+",";
}
Pattern pattern1 = Pattern.compile("##(.*?)##");
Matcher matcher1 = pattern1.matcher(internalLinks);
while (matcher1.find())
{
interLinks += matcher1.group(1)+",";
}
if (interLinks.length() > 0) {
interLinks = interLinks.substring(0, interLinks.length()-1);
return interLinks;
} else return "";
问题是它只是给了我匹配第一个模式的链接,而且只有少数链接,只有3-4个而不是全部
这里我提供了文档文本字段的摘录。
{{date | November 13,2004}} [{巴西}} [[w:胡锦涛|胡锦涛]],[[中华人民共和国主席] [中华人民共和国主席]]今天[[中华人民共和国主席]]与[[ w:[[巴西]],[[w:LuizInácioLulada Silva |LuizInácioLulada Silva]]的巴西总统,巴西总统,在''Granja do Torto'',总统的国家住所[[w:巴西联邦区|巴西联邦区]]。午餐是传统的巴西[[w:烧烤|烧烤]],有各种各样的肉。
一些巴西部长出席了此次活动:[[w:Antonio Palocci | Antonio Palocci]](经济),[[w:pt:Eduardo Campos | Eduardo Campos]]([[w:科技部] (巴西)|科学技术]],[[w:JoãoRobertoRodrigues | Roberto Rodrigues]](农业),[[w:pt:Luiz Fernando Furlan | Luiz Fernando Furlan]](发展),[[w: Celso Amorim | Celso Amorim]]([[w:
部对外关系(巴西)|外部关系]],[[w:Dilma Rousseff | Dilma Rousseff]](矿业和能源)。出席的还有[[w:pt:Roger Agnelli | Roger Agnelli]]([[w:Vale(矿业公司)| Vale do Rio Doce]]公司总裁)和Eduardo Dutra([[w:Petrobras | Petrobras]],政府石油公司,总裁)。
这次会议是巴西与中国之间新的[[w:政治经济|政治经济]]协议的一部分,巴西承认中国大陆[[社会主义市场经济|市场经济]]地位,中国承诺购买更多[[w:巴西经济|巴西产品]]。
答案 0 :(得分:0)
答案 1 :(得分:0)
\[\[(?:w:)?.*?\]\]
此正则表达式假定字符序列]]
不会出现在[[
和]]
之间。
我现在无法找到]]
的转义序列。