Regex 正则表达式匹配字符串之前的内容
我试图使用yahoo管道从内容中提取url,但为此,我需要匹配url之前的所有内容,以及url之后的所有内容: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
<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)。。。有帮助吗?