1

我正在尝试使用正则表达式截断我的 URL,例如,如果我有

http://abcdef.defgh/klmno.jsp/abdcefg 

我需要阅读 url,直到http://abcdef.defgh/klmno.jsp剩下的我需要忽略。

如果我使用

Pattern p = Pattern.compile("href=\".*"); 

我正在获取完整的网址,请帮助我。

4

3 回答 3

0

虽然正则表达式当然可以满足您的要求,但这样做会更有效率:

String url = "http://abcdef.defgh/klmno.jsp/abdcefg";
String desired = url.subString( 0, url.lastIndexOf( '/' ) );
于 2012-08-02T12:50:56.087 回答
0
String test = "href=\"http://abcdef.defgh/klmno.jsp/abdcefg\"";    
System.out.println(test);    

Matcher mtch = Pattern.compile("href=\"(http://.*\\.jsp).*\"").matcher(test);    
System.out.println(mtch.group(1));

会打印出来:

href="http://abcdef.defgh/klmno.jsp/abdcefg"
http://abcdef.defgh/klmno.jsp
于 2012-08-02T12:45:22.717 回答
0

如果您想在之后忽略所有内容,.jsp则需要:

String foo = "http://abcdef.defgh/klmno.jsp/abdcefg";
String bar = foo.replaceAll("\\.jsp.*", ".jsp");

也就是说,取.jsp(转义句点,\否则它意味着“任何字符”)和.jsp( .*) 之后的所有内容,并将其替换为 just .jsp

或者,如果您只想捕获前缀为href=then 的内容,您可以使用:

String foo = "href=\"http://abcdef.defgh/klmno.jsp/abdcefg\"";
String bar = foo.replaceAll("(href=.*\\.jsp)[^\"]*\"", "$1");

也就是说,捕获以 , 开头的所有内容href=.jsp贪婪匹配将确保直到 final .jsp),并将其用作反向引用($1)。排除.jsp最后报价之后的所有内容[^\"]*\"

于 2012-08-02T12:54:01.340 回答