2014-09-24 3 views
0

мне нужно, чтобы превратить этот формат [url]3a7cHPy04s8[/youtube]Два PCRE регулярные выражения

Into: [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/

Спасибо за внимание Помогите!

+0

Является ли домен переменной? – sln

+0

Нет, я так не думаю –

ответ

1

Match:

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

Или:

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

И заменить:

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

Две замены это! – Unihedron

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 
+0

Имейте мой +1 для 2-upping меня;) FYI: Я обновил демоверсию RegEx, чтобы включить замещение в случае, если OP не используется для замещения группами захвата. – Sam

+1

@Sam thanks :) будет отвечать вашим ответом также через 18 минут или когда я вернусь домой, в зависимости от того, что на первом месте, учитывая, что мне нужно перейти к функции, и я вне голосования за этот день переполнения стека;) – Unihedron

Смежные вопросы