java - 正则表达式:如何在 Java 中过滤具有通配符支持的名字?
问题描述
我正在尝试实现一个 API 来搜索用户名,支持通配符。
例如:如果我有 2 个用户:Ankur 和 Ankit,那么以下正则表达式支持是有效的:
- An*k - > Ankur 和 Ankit
- An*t -> Ankit
- An*k -> Ankur
- A * n *i -> Ankur
- A * n *t -> Ankit
我尝试了以下正则表达式:
public static void main(String[] args)
{
String input = "A*n*i";
Pattern pattern = Pattern.compile("(^\\*?)(\\w+)(\\*?)(\\w+)(\\*?)");
Matcher matcher = pattern.matcher(input);
while (matcher.find())
{
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
System.out.println(matcher.group(5));
// Does not capture character i.
}
}
当两者之间只有一个 * 时,正则表达式起作用。现在,如果两者之间的星号数量增加,那么我无法获得这些星号之间的字符。
字符之间的星号可以重复多次,因此我需要您帮助设计一个可以捕获所有这些星号之间的字符的正则表达式。
解决方案
推荐阅读
- python - 以 2D 矩阵形式表示 3 列数据,其中 2 列作为索引,第 3 列作为 python 中的值
- python-3.x - Pandas 在其他列中合并 NaN
- python - 渲染模板后如何从 jinja 模板调用 python 函数?
- typescript - 如何运行 chrome 的多个实例以在量角器中按单个功能文件的顺序运行所有场景
- python-3.x - 如何在python中将文件名作为函数参数传递?
- python - 如何继续运行硒并返回
- angular - 通过多个过滤器搜索项目数组
- javascript - React 组件生命周期:render 和 return 有什么区别,return 之后会发生什么?
- python - 如何分析我的整个 python 程序以查找使用内存的内容
- android - 如何显示自定义浮动视图,如弹出菜单?