两个分隔符之间的子串

SMA*_*AVA 1 java split substring

我有一个字符串:"这是一个应该使用的URL http://www.google.com/MyDoc.pdf "

我只需要提取从http开始并以pdf结尾的URL:http: //www.google.com/MyDoc.pdf

String sLeftDelimiter = "http://";
String[] tempURL = sValueFromAddAtt.split(sLeftDelimiter );
String sRequiredURL = sLeftDelimiter + tempURL[1];
Run Code Online (Sandbox Code Playgroud)

这会将输出显示为"应该使用的http://www.google.com/MyDoc.pdf"

需要帮助.

nd.*_*nd. 11

这种问题是正则表达式的用途:

Pattern findUrl = Pattern.compile("\\bhttp.*?\\.pdf\\b");
Matcher matcher = findUrl.matcher("This is a URL http://www.google.com/MyDoc.pdf which should be used");
while (matcher.find()) {
  System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)

正则表达式解释说:

  • \b 在"http"之前有一个单词边界(即xhttp不匹配)
  • http 字符串"http"(请注意,这也匹配"https"和"httpsomething")
  • .*?任何字符(.)任意次数(*),但尝试使用最少量的字符(?)
  • \.pdf 文字字符串".pdf"
  • \b 在".pdf"之后有一个单词边界(即.pdfoo不匹配)

如果您只想匹配http和https,请尝试使用此http字符而不是字符串:

  • https?\:- 这匹配字符串http,然后是可选的"s"(由?s后面指示),然后是冒号.