我有一个字符串为:“这是一个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];
这使我的输出为“http://www.google.com/MyDoc.pdf应该使用”
需要利用这样的服务。
这种问题是什么的正则表达式是为制作:
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());
}
正则表达式解释说:
-
\b
的“HTTP”之前有一个字边界(即xhttp不匹配) -
http
字符串“HTTP”(注意,这也符合“HTTPS”和“httpsomething”) -
.*?
任何字符( .
)任意次数( *
),但尝试使用的最少字符量( ?
) -
\.pdf
文本字符串“.PDF” -
\b
的“.PDF”之后有一个字边界(即.pdfoo不匹配)
如果你想只匹配http和https,尽量改用这个http
在您的字符串:
-
https?\:
-这个字符串HTTP,则可选的“S”(由指示匹配?
在S之后),然后一个冒号。
你为什么不使用startsWith( “HTTP://”)和的endsWith String类的mthods( “PDF”)。
这两种方法返回布尔值,如果两个返回true,那么你成功的条件否则你的条件失败。
试试这个
String StringName="This is a URL http://www.google.com/MyDoc.pdf which should be used";
StringName=StringName.substring(StringName.indexOf("http:"),StringName.indexOf("which"));
您可以使用Regular Expression
的功率在这里。 首先,你必须找到Url
在原来的字符串,然后删除其他部分。
下面的代码显示了我的建议:
String regex = "\\b(http|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
String str = "This is a URL http://www.google.com/MyDoc.pdf which should be used";
String[] splited = str.split(regex);
for(String current_part : splited)
{
str = str.replace(current_part, "");
}
System.out.println(str);
该段代码罐检索与任何模式的任意字符串的任何URL。 你不能添加自定义协议,诸如https
在上述正则表达式协议部分。
我希望我的回答帮助;)
public static String getStringBetweenStrings(String aString, String aPattern1, String aPattern2) {
String ret = null;
int pos1,pos2;
pos1 = aString.indexOf(aPattern1) + aPattern1.length();
pos2 = aString.indexOf(aPattern2);
if ((pos1>0) && (pos2>0) && (pos2 > pos1)) {
return aString.substring(pos1, pos2);
}
return ret;
}
您可以使用String.replaceAll用了很简洁的解决方案中捕获组和反向引用:
String input = "This is a URL http://www.google.com/MyDoc.pdf which should be used";
System.out.println(input.replaceAll(".*(http.*?\\.pdf).*", "$1"));
下面是正则表达式崩溃: https://regexr.com/3qmus