两个PCRE正则表达式

时间:2014-09-24 22:10:30

标签: regex pcre

我需要将此格式设为[url]3a7cHPy04s8[/youtube]

进入:[media=youtube]3a7cHPy04s8[/media]​

和此格式https://www.youtube.com/watch?v=h_JfHLs2Nc4

进入:[media=youtube]h_JfHLs2Nc4[/media]​

它们将用于此工具 https://xenforo.com/community/resources/post-content-find-replace.1549/

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

匹配度:

~\[url\](\w+)\[/youtube\]~

或者:

~https?://(?:www\.)?youtube\.com/watch\?\S*?v=(\w+)\S*~

并替换为:

[media=youtube]\1[/media]​

答案 1 :(得分:1)

使用此正则表达式替换:

(?|\Q[url]\E([\w-]+)\Q[/youtube]\E|https?:\Q//\E(?:youtu\.be\/|(?:www\.)?\Qyoutube.com/watch?v=\E)([\w-]+))

替换为:

[media=youtube]\1[/media]​

仅作为奖励,它也适用于http://youtu.be/(id)
请参阅regex demo here

说明:

/(?| # Branch Reset: Use persistent group ordering
  \Q[url]\E
  # Literal "[url]"
  ([\w-]+)
  # Stuff that can be within a video ID
  \Q[/youtube]\E
  # Closing tag
| # "or" Alternation, reset group ordering
  https?:\Q//\E
  # http(s)://
  (?:
    youtu\.be\/
  | # youtu.be or (www.)youtube.com/watch?v=
    (?:www\.)?\Qyoutube.com/watch?v=\E
  )
  ([\w-]+)
  # Stuff that can be within a video ID
)/gx