Find是具有开始和结束字符的正则表达式

时间:2014-09-19 06:55:15

标签: java

在这个表达式中,我想提取以href =开头的字符串,直到找到结束括号]。我想找到字符串start,href = until整个表达式的右括号。我该怎么做

  String s=  [a href="http://myimagefactorycollection.files.wordpress.com/2014/09/
    2db83fcf95c5fc036a00abfb412f50e4.jpg"][a href="https://myimagefactorycollection.files.wordpress.com/2014/09/0e397a47f88e18f8fb91d17db18c7edd-copy.jpg"]

The output should be
"http://myimagefactorycollection.files.wordpress.com/2014/09/
    2db83fcf95c5fc036a00abfb412f50e4.jpg"
"https://myimagefactorycollection.files.wordpress.com/2014/09/0e397a47f88e18f8fb91d17db18c7edd-copy.jpg"

1 个答案:

答案 0 :(得分:1)

你可以使用这样的正则表达式:(?<=\[a href=)(.*?)\]

demo here

PS:在演示中,检查RHS上的匹配信息以了解匹配的内容。

说明:

(?<=\[a href=)(.*?)\] ?<=是积极的后视,即只有在[a href=之前才会匹配内容。

接下来,我们必须逃避[,因为它们在正则表达式中具有特殊含义。这同样适用于]

此外,我们不应在输出中包含],因此我们使用(.*?)\]来捕获[a herf=之后和]之前的所有内容。

?之后的.*量词使其成为lazy(非贪婪),以便它与第一个]而不是最后一个]匹配。