Flex RegEx到Java RegEx

时间:2011-11-01 06:42:12

标签: java regex flex

最近我正在寻找帮助,在flex中使用RegExp提取一些URL的模式,很少有人帮我完成它。 See this我需要在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”中的异常java.util.regex.PatternSyntaxException:索引1附近的非法重复   /({{\ ^)([A-Za-z0-9 _ \ ^}} {{,])*(})/

1 个答案:

答案 0 :(得分:2)

{是Java正则表达式中的元字符,用于有界重复,例如a{1,2}匹配至少1,最多2'a。由于您没有使用它进行重复,因此您应该使用{转义每个\\