我正在开发维基百科提供的媒体wiki xml,我正在尝试预处理数据删除并替换文本中的一些特定表达式。一个这样的预处理是将所有内部链接替换为维基百科页面,如下所示 -
输入 -
这里的文字[[foo | bar]]这里的文字[[some.jpg | some |这是一些图片]]这里的文字
输出 -
这里的文字foo bar text here.jpg这里有一些文字的图像
这是我现在能够实现的目标 -
String regex = "(\\[\\[(.+?)\\]\\]*)";
string.replaceAll(regex, "$2"));
这可以帮助我从文本中删除[[]]
。但是我有点试图用空格"|"
替换管道" "
。
感谢任何帮助。
答案 0 :(得分:1)
如果您只想清理一组特殊字符,只需匹配这些字符
即可string.replaceAll("[\\[\\]\\|\\s]+", " ");
答案 1 :(得分:0)
这将解决重复空间问题:
String regex = " \\[{2}|\\]{2} |\\|";
String result = subject.replaceAll(regex, " ");
如果你想检查你删除的方括号和管道是否是你正在寻找(即[[word1|word2|...|wordN]]
)的结构的一部分,你也可以使用{{1基于模式:
\G
模式细节:
String regex = "(?:\\G(?!\\A)\\|| ?\\[\\[(?=[^\\]\\[|]+(?:\\|[^\\]\\[|]+)*+\\]\\]))([^\\]\\[|]+)(?>\\]\\])?";
String result = subject.replaceAll(regex, " $1");