Regex 为什么这个正则表达式不是';不行吗?

Regex 为什么这个正则表达式不是';不行吗?,regex,Regex,我正在使用: "<a\b[^>]*href=\"\\lyrics\\*\">(.*?)</a>"; ”; 我试图找到这些参数下的值: <a href="/lyrics/anything.html">This is what I need</a> 我需要找到“这就是我需要的”,但“任何东西”都会根据链接的不同而变化。我不想在所有“a”标签中找到文本,但只有其中一个标签在歌词文件夹中。我不明白为什么这个现在不起作用?我很难解

我正在使用:

"<a\b[^>]*href=\"\\lyrics\\*\">(.*?)</a>"; 
”;
我试图找到这些参数下的值:

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


我需要找到“这就是我需要的”,但“任何东西”都会根据链接的不同而变化。我不想在所有“a”标签中找到文本,但只有其中一个标签在歌词文件夹中。我不明白为什么这个现在不起作用?我很难解释,但先谢谢你。哦,我知道正则表达式可能不是最好的方法,但我真的很想研究它。

您正在转义
\\
,而不是使用
/
(它是
/lysts/
而不是
\lysts\

此外,
\\*
将匹配0个或多个
\
字符,而您应该匹配的字符不是

以下步骤可以:

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

您的斜杠绕错了方向(即,组成路径的斜杠),并且在*前面缺少一个点:

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

取决于您使用的是哪个正则表达式引擎。给定Perl或Java引擎,以下是我所看到的错误

\b
是不必要的


\\\*
应该是
/lysts/*
(如果是Perl,那么您也需要转义
/

通常不需要转义
/
。啊-谢谢Oded;我一直使用它们都没有问题,因此从未意识到它们是多余的-删除(这基本上意味着我现在已经得到了你的答案,加上一个点——我要你指出这一点)。我使用了
[^\“]
而不是
,因为它只匹配到下一个
,而不是需要回溯的字符串末尾。使用
的转义符。”
以及正则表达式包含在
"
这一行以
结尾,我假设是Java或C。不过,我使用的是Php。它可能看起来像另一种语言,因为我对这一点比较陌生。它会有显著的区别吗?在这种情况下,不会有太多。有许多不同的正则表达式引擎,许多都使用相同的运算符,但有些命令使用line实用程序(如grep)完全不同。对于将来的正则表达式问题,指出您使用表达式的位置会很有帮助,这样我们就不必从帖子中推断出来了。;)我需要使用,因为我一直收到一个错误,但感谢您帮我找到了正确的方向。