返回正则表达式匹配的一部分

时间:2009-02-18 02:17:12

标签: regex

这个问题表明我对正则表达式的无知。我从来没有完全理解它。

例如,如果我想匹配HTML中标记的URL部分,我还需要做什么?

我的正则表达式是获取整个标记:

<A[^>]*?HREF\s*=\s*[""']?([^'"" >]+?)[ '""]?>

我不知道我需要做些什么来获取URL,我不知道在哪里查看正则表达式文档来解决这个问题。

4 个答案:

答案 0 :(得分:3)

如果在Perl中编程,您可以在if()语句中使用$ 1运算符。对于前。

if( $HREF =~ /<A[^>]*?HREF\s*=\s*[""']?([^'"" >]+?)[ '""]?>/ ) {
 print $1;
}

答案 1 :(得分:2)

确切的HOW部分取决于您正在使用的正则表达式库,但方法是使用分组表达式。实际上,您的示例中已经有一个,因为分组表达式是括号。 href属性值是您的第一个组(您的第0个组是整个表达式。)

答案 2 :(得分:1)

您可以使用圆括号对正则表达式匹配的部分进行分组。在这种情况下,您可以在URL部分周围使用圆括号,然后使用数字来引用该组。请参阅here,了解您可以做到这一点。

答案 3 :(得分:0)

我改变了一点 - 尝试这样的事情:

<a[^>]*href="([^"]*).*>