2013-12-08 4 views
0

Я не очень хорошо разбираюсь в регулярных выражениях. Пожалуйста, помогите сделать это выражение.php Regular Expression match custom

$subject = "action[attribute1=value1,attribute2=values,...]"; 
// format is ^word[str=str,...]$ 

Мне нужно сопоставить «действие», «атрибуты» и «значения». Благодарю.

+1

Что вы пробовали так далеко? Кроме того, вы могли бы прояснить немного больше, для чего вам нужно регулярное выражение? – thesquaregroot

+0

#. *? (\\ [. *? \\]) #, но это возврат только [...]. У меня есть функция, которая должна позволить пользователю или группе продолжать использовать другую функцию: allow ('limited [group = admin]'); // if ($ user-> group == admin) call_user_func ('limited'); –

ответ

1

Сначала найти соответствие с регулярных выражений шаблон \b(\w+)\[((?:(?<=[,\[])(?:\w+)=(?:[^,\]]+)[,\]]?)+)]

Regular expression visualization

получить имя действия, как Group 1 и параметров списка, как Группа 2.


В следующем шаге применить регулярное выражение (?:^|(?<=,))(\w+)=([^,\]]+)(?=,|$) к Группа 2 сверху регулярное выражение

Regular expression visualization

, чтобы получить список атрибутов и соответствующих значений ...

+0

Nifty graphics - как вы их создали? –

+0

@ EdCottrell :: https://www.debuggex.com/ –

+0

Прохладный, спасибо. –