java - 获取 url 的正则表达式模式不起作用

标签 java regex

让我直接讨论我的问题。

public static final String EXAMPLE_TEST = "<span id=\"lblObject\"><a href=\"http://www.guideline.gov/content.aspx?id=15135\" alt=\"View object\">Manual medicine guidelines for musculoskeletal injuries.</a></span>";

    //public static final String EXAMPLE_TEST ="<a href=\"http://www.guideline.gov/content.aspx?id=1112\"></a>";
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("<a href=\"http://www.guideline.gov/content.aspx?id=(\\d+)\"");
        // in case you would like to ignore case sensitivity,
        // you could use this statement:
        // Pattern pattern = Pattern.compile("\\s+", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(EXAMPLE_TEST);
        // check all occurance
        while (matcher.find()) {
            System.out.print("Start index: " + matcher.start());
            System.out.print(" End index: " + matcher.end() + " ");
            System.out.println(matcher.group());
        }


    }

正则表达式存在一些问题。我使用的示例字符串只是一个虚拟字符串。实际上,我将有一个 html 文件,其中有许多具有以下模式 http://www.guideline.gov/content.aspx?id=some_number 的 url 链接。我需要从该 html 文件中获取这些链接。请大家帮我找出我的正则表达式有什么问题。

最佳答案

问题是问号 ? 是一个正则表达式量词,意思是“一或无”,但您将其用作文字字符:您必须转义问号:

Pattern pattern = Pattern.compile("<a href=\"http://www.guideline.gov/content.aspx\\?id=(\\d+)\"");

这里的主要区别是:

...content.aspx\\?id...

请注意问号之前的双反斜杠,这就是在 Java 中为正则表达式编写单反斜杠的方式,因此模式为 ...content.aspx\?id...

您的正则表达式没有问号,而是有零或一个x,然后是id

您可能也应该转义点,但它可能已经足够接近了。

关于java - 获取 url 的正则表达式模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399787/

相关文章:

C# 字符串操作搜索和替换

javascript - 根据多个分隔符拆分字符串

java - Spring Batch条件流不执行else部分

java - 如何获取 Tapestry 5 组件中父包围体的 clientId?

java - JMesa:对表进行预排序

java - 正则表达式和 RSS 源

javascript - 在javascript中使用正则表达式在字符串末尾找到匹配项

python - 有谁知道为什么我的正则表达式的第一部分在 Python 中不起作用?

java - Eclipse RCP : How to bring existing WorkbenchWindow to the top?

java - 仅使用外部 ID 的 Hibernate 一对一映射