java - 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");
有任何想法吗?
解决方案
通过使用正则表达式,\[\[[^|]*\|(.*)\]\]
您可以从匹配的文本中检索 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正则表达式的解释:
推荐阅读
- java - Sikuli 似乎在抛出 java.lang.ExceptionInInitializerError
- python-3.x - Python 3:使用 response-kerberos 包进行身份验证
- javascript - 尝试在迭代之前等待列表被填充 NodeJS
- asp.net - UserControl 中的 CustomValidator 不适用于 clientsidevalidation
- android - 当我想查看用户的个人资料时出现错误,它只查看电子邮件而不查看密码,电话
- cassandra - 我需要将所有节点传递给 Cassandra 客户端吗?
- angular - 具有嵌套子组件的角路由结构
- c# - 为什么这个异步代码不能在等待之前的相同上下文中继续?
- c# - LuisService 不会序列化 botframework V4 中 DateTimeV2 实体的所有分辨率值
- android - 从 iFrame / webview 获取事件到父级 - Ionic