维基百科正则表达式匹配和替换

时间:2013-04-07 20:47:02

标签: java regex wikipedia

我正在开发维基百科提供的媒体wiki xml,我正在尝试预处理数据删除并替换文本中的一些特定表达式。一个这样的预处理是将所有内部链接替换为维基百科页面,如下所示 -

输入 -

  

这里的文字[[foo | bar]]这里的文字[[some.jpg | some |这是一些图片]]这里的文字

输出 -

  

这里的文字foo bar text here.jpg这里有一些文字的图像

这是我现在能够实现的目标 -

String regex = "(\\[\\[(.+?)\\]\\]*)"; 
string.replaceAll(regex, "$2"));

这可以帮助我从文本中删除[[]]。但是我有点试图用空格"|"替换管道" "

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果您只想清理一组特殊字符,只需匹配这些字符

即可
string.replaceAll("[\\[\\]\\|\\s]+", " ");

答案 1 :(得分:0)

这将解决重复空间问题:

String regex = " \\[{2}|\\]{2} |\\|";
String result = subject.replaceAll(regex, " ");

如果你想检查你删除的方括号和管道是否是你正在寻找(即[[word1|word2|...|wordN]]的结构的一部分,你也可以使用{{1基于模式:

\G

demo

模式细节:

String regex = "(?:\\G(?!\\A)\\|| ?\\[\\[(?=[^\\]\\[|]+(?:\\|[^\\]\\[|]+)*+\\]\\]))([^\\]\\[|]+)(?>\\]\\])?";
String result = subject.replaceAll(regex, " $1");