两个分隔符之间的串(substring between two delimiters)

2019-06-23 16:02发布

我有一个字符串为:“这是一个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应该使用”

需要利用这样的服务。

Answer 1:

这种问题是什么的正则表达式是为制作:

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之后),然后一个冒号。


Answer 2:

你为什么不使用startsWith( “HTTP://”)的endsWith String类的mthods( “PDF”)。

这两种方法返回布尔值,如果两个返回true,那么你成功的条件否则你的条件失败。



Answer 3:

试试这个

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"));


Answer 4:

您可以使用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在上述正则表达式协议部分。

我希望我的回答帮助;)



Answer 5:

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;
}


Answer 6:

您可以使用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



文章来源: substring between two delimiters