【发布时间】:2013-08-20 06:04:08
【问题描述】:
全部,源内容可能是这样的:
String content1 = "url:(\"../../aaa/bbb/ccc\")";
String content2 = "url:('/bb/add/www')";
String content3 = "url:(ggg/eee/xxx)";
String content4 = "url:('../../aaa/bbb/ccc')";
谁能帮我设计一个高性能的 Java 模式匹配器正则表达式如下:
regex = "^[.]*url\\:\\([\"\\'][(?:\\.\\.)?]([^\"\\)]+)[\"\\']\\)$";
public static String parsePath(String content,String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
if (matcher.find()) {
return matcher.group(1);
}
return null;
}
我想要 content1 到 content 4 的输入,调用 parsePath 函数将始终返回 /aaa/bbb/ccc 、 /bb/add/www 、 ggg/eee/xxx 、 /aaa/bbb/ccc 。那就是我想跳过前缀("|'.. 和后缀'|"),只想捕捉以 / 开头的中间实际 url 路径。
那么任何人都可以帮助我编写高性能的正则表达式吗?
【问题讨论】:
-
请举例说明不应该匹配的内容。它将帮助我们制定答案
-
您的正则表达式必须以
^开头并以$结尾。这要求说字符串必须以...开头并以...结尾;否则它将匹配字符串中的任何位置 -
嗨,波西米亚人,我想从源代码中转义 ".." 和 "'" , "\"" 。
-
所有,我编辑我的要求,谢谢,继续。
-
你的字符串 content3 和它想要的输出相矛盾。请对其中任何一个进行修改。