最近,我在寻找帮助,以便在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());
它给出了这个错误
线程“主”中的异常java.util.regex.PatternSyntaxException:索引1附近非法重复
/({{\ ^)([A-Za-z0-9 _ \ ^}} {{,])*(})/
最佳答案
{
是Java正则表达式中的元字符,用于有限重复,例如a{1,2}
至少匹配1个,最多2个'a'。由于您不使用它进行重复,因此应使用{
转义每个\\
。
关于java - 从Flex RegEx到Java RegEx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7963263/