基本上,我正在阅读维基百科API中的信息,该信息会返回包含其降价中页面源代码的JSON代码。我使用JSON API从页面中过滤我想要的内容,现在我想以删除所有链接等方式格式化文本。
降价显示如下链接:[[wiki page|display text]]
但它也可以显示如下:[[wiki page]]
所以,我想要做的是如果管道字符存在则提取display text
,但如果不存在,我只想要wiki page
文本。
这是我现在的代码,应检测是否有管道字符并正确处理这些字符串但不包含:
private static String format(String s) {
return s.replaceAll("\\[\\[.+?(\\]\\]|\\|)", "").replace("[[", "").replace("]]", "").trim();
}
运行此功能时,有时会将任何显示为[[wiki page]]
的文本取出,但如果管道符在那里则可以使用。如何才能使其正常工作?
答案 0 :(得分:3)
您可以使用:
private static String format(String s) {
return s.replaceAll("\\[\\[(?:[^|\\]]*\\|)?(.+?)\\]\\]", "$1");
}
答案 1 :(得分:1)