Flex RegExp到Java RegExp [英] Flex RegExp to Java RegExp
问题描述
最近我在寻找帮助来提取使用RegExp在flex中的一些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_\\ ^}} {{,])*(})/;
模式paramPattern = Pattern.compile(urlPattern);
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_\ ^}} {$,$,$,$,$,$,$,$,$,$,$,$,$, 是Java正则表达式中的元字符,用于有限的重复,例如a {1,2}
至少匹配1,最多2个a。因为你不用它来重复,你应该用\\
来转义每个{
。Recently i was looking for help to extract some pattern of a URL using RegExp in flex, Few guys kindly helped me to get it done. See this I need to do it again in java layer, i tried to applied the same regExp pattern in java, but it gives me an error.
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');
This gives the www.something.com@param1=username,param2=user_id.
Can somebody help me out to do this in java layer, relavent regular expression is enough.
This is what i tried in 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());
It gives this error
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 1 /({{\^)([A-Za-z0-9_\^}}{{, ])*(})/
解决方案
{
is a meta character in Java regexes, for bounded repetition, e.g.a{1,2}
matches at least 1, at most 2 'a's. As you are not using it for repetition, you ought to escape each{
with\\
.这篇关于Flex RegExp到Java RegExp的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!