正则表达式选择中间值

时间:2016-03-04 13:01:42

标签: regex

我是正则表达式的新手,我对它的工作感到困惑。我的链接是

<a href="https://vimeo.com/107828076">Embed</a>

从此标记中,如果<href>的内部值为&#34;嵌入&#34;那么必须选择.com之后立即出现的值。

我已经尝试过这个表达式,

`<a(?:\s+href="(?:https://.*?/([^"]*))"\s*.*?)>(?:.*?(?i)Embed.*?)</a>`

我可以有更好的表达来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为这是positive lookahead的典型例子。你必须在逻辑上做什么就是寻找Embed。如果您的要求仅为Embed,那么请查找>Embed<,然后捕获.com后面的内容。正则表达式实现了同样的目标。

正则表达式: <a.*\.com\/([^"]*)(?=.*\>Embed\<\/a>.*)

使用的标志:   - 如果您正在进行全局搜索,请g

<强>解释

  • (?=.*\>Embed\<.*)查找Embed

  • <a.*\.com\/([^"]*)会在.com之后捕获所有内容,直至结束" 如果<a>存在

注意: .com也会匹配。但是,由于您只需要其后的内容,您可以使用捕获的组\1$1,无论您的正则表达式支持什么。

Regex101 Demo