正则表达式区分两种类型的字符串

时间:2015-07-08 03:04:08

标签: regex

我有一个WordPress XML文件,我必须查找并替换以将纯YouTube YouTube转换为YouTube嵌入代码。我不能只进行通配符搜索,因为XML文件还有指向需要保持原样的YouTube视频的锚点链接。

所以,我必须找到这样的字符串:

http://www.youtube.com/watch?v=qO7xcLFBIPI&list=PLz0RLQy-mngFQ1I67MJGmH-7kfltr4neI

和此:

http://www.youtube.com/watch?v=qO7xcLFBIPI

用这个替换它们:

<iframe width="640" height="360" src="https://www.youtube.com/embed/qO7xcLFBIPI?list=PLz0RLQy-mngFQ1I67MJGmH-7kfltr4neI" 
frameborder="0" allowfullscreen></iframe>

但是符合这一点:

src="http://www.youtube.com/embed/videoseries?list=PLz0RLQy-mngFQ1I67MJGmH-7kfltr4neI"

或者这个:

<a href="http://www.youtube.com/watch?v=czZLV0ofaMc&amp;list=PLz0RLQy-mngFQ1I67MJGmH-7kfltr4neI">

我认为任何没有用引号括起来的youtube链接都会这样做。任何帮助将不胜感激。我认为在Coda中进行正则表达式搜索和替换会做到这一点,但我没有掌握这方面的知识。

干杯。

1 个答案:

答案 0 :(得分:2)

如何(^|[^"])(http:\/\/www.youtube.com\/[^\s"]*),并使用第二个匹配组。

See example here

说明:

  1. (^|[^"])找到该行的开头或双引号以外的任何字符;这是必要的,以确保你不在双引号内,但匹配被忽略。
  2. http:\/\/www.youtube.com\/当然会找到“http://www.youtube.com/”。
  3. [^\s"]*查找所有字符,但包括下一个空格(\s)或双引号(")。
  4. 2和3用括号括起来,形成第二个匹配组,这就是你要找的。
相关问题