首页 > 解决方案 > Java 正则表达式匹配维基百科链接

问题描述

我正在尝试编写一个 java 正则表达式来从维基百科链接中提取文本,但我做不到。

本质上,我想从中<article alias>提取[[Some Article|<article alias>]]. 对于任何给定的字符串,该序列[[<Any article>|<any alias>]]将显示未知的次数。

基本上我正在寻找一个正则表达式来输入<regexp here>

final String someRandomText = "Some random text about [[Roman Empire|the romans]]";
final String replaced = someRandomText.replaceAll("<regexp here>", "$1");

有任何想法吗?

标签: javaregex

解决方案


通过使用正则表达式,\[\[[^|]*\|(.*)\]\]您可以从匹配的文本中检索 group(1)。

演示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String args[]) {
        Matcher matcher = Pattern.compile("\\[\\[[^|]*\\|(.*)\\]\\]")
                .matcher("Some random text about [[Roman Empire|the romans]]");
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

输出:

the romans

regex101正则表达式的解释:

在此处输入图像描述


推荐阅读