我希望有人可以协助以下正则表达式,因为我无法让它工作。
我有" breadcrumb"字符串总是由格式" MainCategory>组成。子类别"字符串可以包含多个通过" |"分隔的字符串: 游戏>第一人称射击游戏|游戏>行动| AudioVisual>音乐 要么 游戏>第一人称射手
在上面的示例中,我需要提取所有主要类别为" Game"的子类别,因此正则表达式将返回: - 第一人称射击 - 行动
解决:
String strSearch = "Game > First person shooter|Game > Action|AudioVisual > Music";
Pattern findGenre = Pattern.compile("Game\\s*>\\s*([^\\|]+)");
Matcher matcher = findGenre.matcher(strSearch);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出是:
First person shooter
Action
答案 0 :(得分:1)
你可以这样做:
public String extract(String input, String cat)
{
Pattern p = Pattern.compile(cat + "\\s*>\\s*([^\\|]+)");
Matcher m = p.matcher(input);
StringBuffer sb = new StringBuffer();
while (m.find())
{
sb.append(" - ").append(m.group(1));
}
return sb.toString();
}
用法:
System.out.println(extract("Game > First person shooter|Game > Action|AudioVisual > Music", "Game"));
打印:
- First person shooter - Action
答案 1 :(得分:0)
我假设你输入的是
Game > First person shooter|Game > Action|AudioVisual > Music | Game > First person shooter
您需要以下商品
First person shooter, Action
试试这个正则表达式:Game\\s*>\\s*(.+?)\\s*\\||Game\\s*>\\s*(.+?)$