从字符串Java(Android)获取子字符串

时间:2014-11-18 14:18:01

标签: java regex

你能帮我解决这个问题吗?我有这样的字符串:

<p class="youtube_sc mobile "><a href="vnd.youtube:bMHJODdp7-U" title="YouTube video player"><img src="http://i.ytimg.com/vi/bMHJODdp7-U/hqdefault.jpg" /><span class="play-button-outer" title="Click to play video"><span class="play-button"></span></span></a></p>

我只需要获得“ youtube:”之后的内容,在此示例的这一部分中: bMHJODdp7-U
我使用我的例子的代码:

String path = strin.replaceAll(".*(youtube:\\S+)", "$ title");

strin是String行。但是这段代码只能取代我需要的“标题” 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

说明 - youtube:(.*?)\"youtube:"之间的文字匹配

  public static void main(String[] args) {
        String s = "<p class=\"youtube_sc mobile \"><a href=\"vnd.youtube:bMHJODdp7-U\" title=\"YouTube video player\"><img src=\"http://i.ytimg.com/vi/bMHJODdp7-U/hqdefault.jpg\" /><span class=\"play-button-outer\" title=\"Click to play video\"><span class=\"play-button\"></span></span></a></p>";
        Pattern pattern = Pattern.compile("youtube:(.*?)\"");
        Matcher matcher = pattern.matcher(s);
        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

<强>输出

bMHJODdp7-U

答案 1 :(得分:0)

您可以使用此正则表达式进行搜索:

^.*?youtube:([^"]+).*$

并将其替换为:

$1

<强>代码:

String path = strin.replaceFirst("^.*?youtube:([^\"]+).*$", "$1");
//=> bMHJODdp7-U

RegEx Demo

答案 2 :(得分:0)

将正则表达式更改为

(?:youtube:)(\S+)(?:")