Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式匹配字符串之前的内容_Regex - Fatal编程技术网

Regex 正则表达式匹配字符串之前的内容

Regex 正则表达式匹配字符串之前的内容,regex,Regex,我试图使用yahoo管道从内容中提取url,但为此,我需要匹配url之前的所有内容,以及url之后的所有内容: <div class="medium mode player"><div class="info-header"><a rel="nofollow" target="_blank" href="http://i1.sndcdn.com/artworks-000059185212-dsb68g-crop.jpg?3eddc42" class="artwor

我试图使用yahoo管道从内容中提取url,但为此,我需要匹配url之前的所有内容,以及url之后的所有内容:

<div class="medium mode player"><div class="info-header"><a rel="nofollow" target="_blank" 
href="http://i1.sndcdn.com/artworks-000059185212-dsb68g-crop.jpg?3eddc42" class="artwork" 
style="background:url(http://i1.sndcdn.com/artworks-000059185212-dsb68g-badge.jpg?
3eddc42);">Dream ft. Notorious BIG Artwork</a> <h3><a rel="nofollow" target="_blank" 
href="http://soundcloud.com/tom-misch/dream-ft-notorious-big">Dream ft. Notorious BIG</a>
</h3> <span class="subtitle"><span class="user tiny online"><a rel="nofollow" 
target="_blank" href="http://soundcloud.com/tom-misch" class="user-name">Tom Misch</a>

我想要的url是:

我试图学习一些关于regex的知识,但当我认为我理解时,我尝试的东西都不管用

希望你们中的一些人能在这方面帮助我! cheers

,它只匹配来自soundcloud的url,soundcloud使用
http
协议且没有子域,该组将捕获完整url以便您可以使用它,并使用a匹配第一个报价:

(http://soundcloud.*?)"
:,它不使用惰性四元化器,而是使用一个来匹配除引号以外的任何内容:

(http://soundcloud[^"]+)
请记住,两个正则表达式实际上都将匹配两个URL,这取决于库和使用的标志。它可能只返回第一次出现的内容,或者两者都返回,您可以使用第一次出现的内容,或者进一步检查结果的格式是否正确

如果您真的只想使用正则表达式,并且您的正则表达式库支持向前看,您可以这样做:

(http://soundcloud.*?)\s+(?!class="user-name")
如果后面的字符串是
class=“user name”


我也没有,找到yahoo pipes使用的库,如果您想替换url周围的所有内容,可以将正则表达式更改为:

^.*?(http://soundcloud[^"]+).*$
并在替换字符串中使用
$1
获取url(请记住,我将
*?
[^]混合使用)+
,这是因为我想用第一个url而不是第二个url替换整个字符串,所以我需要第一个
*
匹配到第一个url的点并停止,这就是懒惰量词的作用).

,它只匹配来自soundcloud的url,soundcloud使用
http
协议且没有子域,该组将捕获完整的url以便您可以使用它,并使用一个来匹配第一个报价:

(http://soundcloud.*?)"
:,它不使用惰性四元化器,而是使用一个来匹配除引号以外的任何内容:

(http://soundcloud[^"]+)
请记住,两个正则表达式实际上都将匹配两个URL,这取决于库和使用的标志。它可能只返回第一次出现的内容,或者两者都返回,您可以使用第一次出现的内容,或者进一步检查结果的格式是否正确

如果您真的只想使用正则表达式,并且您的正则表达式库支持向前看,您可以这样做:

(http://soundcloud.*?)\s+(?!class="user-name")
如果后面的字符串是
class=“user name”


我也没有,找到yahoo pipes使用的库,如果您想替换url周围的所有内容,可以将正则表达式更改为:

^.*?(http://soundcloud[^"]+).*$

并在替换字符串中使用
$1
获取url(请记住,我将
*?
[^]混合使用)+
,这是因为我想用第一个url而不是第二个url替换整个字符串,所以我需要第一个
*
匹配到第一个url的点并停止,这就是懒惰量词的作用)。

快速问题。1)是否使用jQuery?2)是否希望标记中除了第一个url以外的所有url?我这样问是因为你为什么不想要Tom Mish的url?我不想要Tom Mish的url,因为在歌曲的页面中,已经有一个隐藏的.xml,其中包含歌曲的唯一url。因此,我需要通过我上面给出的完整URL访问此页面。我不知道Yahoo Pipes中运行的确切库是什么:我尝试了您的解决方案,但似乎不起作用,我认为正则表达式需要匹配除URL之外的所有内容,并删除“其他所有内容”。使用yahoo pipes工具获取正则表达式字符串是不可能的,只能用另一个替换一个。我刚刚发现$1、$2等的含义。这肯定会有帮助^^^^但仍然不起作用,您的主张似乎都与url不匹配:我能找到的是yahoo pipes使用yahoo!查询语言(YQL)。。。有帮助吗?快速提问。1)是否使用jQuery和。2)是否希望标记中除了第一个URL以外的所有URL?我这样问是因为你为什么不想要Tom Mish的url?我不想要Tom Mish的url,因为在歌曲的页面中,已经有一个隐藏的.xml,其中包含歌曲的唯一url。因此,我需要通过我上面给出的完整URL访问此页面。我不知道Yahoo Pipes中运行的确切库是什么:我尝试了您的解决方案,但似乎不起作用,我认为正则表达式需要匹配除URL之外的所有内容,并删除“其他所有内容”。使用yahoo pipes工具获取正则表达式字符串是不可能的,只能用另一个替换一个。我刚刚发现$1、$2等的含义。这肯定会有帮助^^^^但仍然不起作用,您的主张似乎都与url不匹配:我能找到的是yahoo pipes使用yahoo!查询语言(YQL)。。。有帮助吗?