为什么这个正则表达式不起作用?

时间:2012-10-25 20:06:07

标签: regex

我正在使用:

"<a\b[^>]*href=\"\\lyrics\\*\">(.*?)</a>"; 

我正试图找到这些参数下的值:

     <a href="/lyrics/anything.html">This is what I need</a>

我需要找到“这就是我需要的东西”,但“任何东西”会根据链接而改变。我不想在所有'a'标签内找到文本,但只有其中一些在lyrics文件夹中。我不明白为什么这个目前不起作用?我很难解释,但提前谢谢。哦,我理解正则表达式也许不是最好的方法,但是,我真的很想看看它。

3 个答案:

答案 0 :(得分:2)

您正在转义\\而非使用//lyrics/而不是\lyrics\

此外,如果您要匹配任何非\\*的字符,\将匹配0个或更多"个字符。

以下是:

"<a\b[^>]*href=\"/lyrics/[^\"]*\">(.*?)</a>"

答案 1 :(得分:0)

您的斜线是错误的方式(即组成路径的斜线)并且您在*之前错过了一个点:

<a\b[^>]*href=\"/lyrics/.*\">(.*?)</a>

答案 2 :(得分:0)

取决于您使用的RegEx引擎。鉴于Perl或Java引擎,我认为这是错误的。

\b是不必要的

\\lyrics\\*应该是/lyrics/.*(如果是Perl,那么你也需要逃避/。)