让我直接讨论我的问题。
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/