使用java正则表达式提取URL的一部分

时间:2014-01-27 06:26:17

标签: java regex expression

我正在尝试提取文本文件中的部分网址。

例如:

/p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed" class="search_bin"><span>Closed Tickets</span></a> 

我想只提取

 /p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed 

我如何通过使用常规表达来做到这一点。我尝试使用正则表达式

  "/p/*./bugs/*." 

但它不起作用。

3 个答案:

答案 0 :(得分:0)

试试这个:

   "\/p.*\/bugs[^"]*"

表示:“/ p”

然后:所有的角色,

然后:“/ bugs”,

然后:除"

之外的所有字符

答案 1 :(得分:0)

您可以使用:

(\/p\/.*\/bugs\/.*?(?="))

Java代码:

        String REGEX = "(\\/p\\/.*\\/bugs\\/.*?(?=\"))";
        Pattern p = Pattern.compile(REGEX);
        Matcher m = p.matcher(line);
        while (m.find()) {
                String matched = m.group();
                System.out.println("Mached :  "+ matched);

            }

<强>输出

Mached :  /p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed

<强> DEMO

<强>说明: enter image description here

答案 2 :(得分:0)

这是另一种方式:

(?i)/p/[a-z/]+bugs/[^ "]+

开头的(?i)使正则表达式不区分大小写,因此您不必担心这一点。然后在错误/它将继续,直到它到达空格或“。