Flex RegExp到Java RegExp

最近我正在寻找帮助,在flex中使用RegExp提取一些URL的模式,很少有人帮我完成它。 看到这个我需要在java层再次执行它,我试图在java中应用相同的regExp模式,但它给了我一个错误。

var s:String = "www.something.com@param1={{^User Name^}},{{^,e,^}},param2={{^user id^}}"; var userPattern:RegExp = /(?<=param1=)({{\^)([A-Za-z0-9\^}}{{, ])*(})/; var userIdPattern:RegExp = /(?<=param2=)({{\^)([A-Za-z0-9\^}}{{, ])*(})/; s = s.replace(userPattern,'username'); s = s.replace(userIdPattern,'user_id'); 

这给出了www.something.com @param1 = username,param2 = user_id。

有人可以帮助我在java层中执行此操作,相关正则表达式就足够了。

这是我在java中尝试过的,

 String url = "http://www.google.com/@param1={{^Case Name^}},param2={{^Case Id^}}"; String urlPattern = "/({{\\^)([A-Za-z0-9_\\^}}{{, ])*(})/"; Pattern paramPattern = Pattern.compile(urlPattern); Matcher matcher = paramPattern.matcher(url); System.out.println("Matches - "+matcher.matches()); System.out.println("Find - "+matcher.find()); 

它给出了这个错误

线程“main”中的exceptionjava.util.regex.PatternSyntaxException:索引1附近非法重复/({{\ ^)([A-Za-z0-9 _ \ ^}} {{,])*(})/

{是Java正则表达式中的元字符,用于有界重复,例如a{1,2}匹配至少1,最多2’a’。 因为你没有用它来重复,你应该逃避每个{\\