아래 코드에서와 같이 와일드 카드로 목록 (lMapValues)을 가지고 있습니다. 일치하는 URL을 찾으려면 URI와이 목록을 비교해야합니다.URL 목록에서 특정 URI와 일치하는 정규식 패턴
아래 코드에서지도의 m 값과 일치하는 URL을 가져야합니다. 즉, 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);
}
}
}
}
위의 목표를 달성하려면 정규식 패턴으로 도와주세요. 도움이 될 것입니다.
당신은 정답을 제공하지 않는 무엇을 의미합니까? 정답은 무엇입니까? 투입물과 기대되는 결과의 예를 제시 할 수 있습니까? – Elmer
나는 여기에 입력을 언급했다. String uri = "cr/eRControl/work/custom.jsp"; 일치하는 URL을 목록에서 https : // cr/eRControl/*로 반환해야합니다 –