我有一个带有通配符的 url 列表(lMapValues),如下面的代码中所述,我需要将 uri 与该列表进行匹配以找到匹配的 url。
在下面的代码中,我应该得到匹配的 url 作为地图 m 中 d 的值。这意味着如果 uri 的一部分在 url 列表中匹配,则应选择该特定 url。
我尝试在令牌中拆分 uri,然后检查列表 lMapValues 中的每个令牌。但是它没有给我正确的结果。下面是代码。
public class Matcher
{
public static void main( String[] args )
{
Map m = new HashMap();
m.put("a","https:/abc/eRControl/*");
m.put("b","https://abc/xyz/*");
m.put("c","https://work/Mypage/*");
m.put("d","https://cr/eRControl/*");
m.put("e","https://custom/MyApp/*");
List lMapValues = new ArrayList(m.values());
List tokens = new ArrayList();
String uri = "cr/eRControl/work/custom.jsp";
StringTokenizer st = new StringTokenizer(uri,"/");
while(st.hasMoreTokens()) {
String token = st.nextToken();
tokens.add(token);
}
for(int i=0;i<lMapValues.size();i++) {
String value = (String)lMapValues.get(i);
String patternString = "\\b(" + StringUtils.join(tokens, "|") + ")\\b";
Pattern pattern = Pattern.compile(patternString);
java.util.regex.Matcher matcher = pattern.matcher(value);
while (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(value);
}
}
}
}
请帮助我使用正则表达式模式来实现上述目标。任何帮助将不胜感激。