2013-03-11 3 views
-1

У меня есть строка, подобная этому abc+def(ghi)+jkl, и я хочу получить {abc,ghi,jkl} в результате регулярного выражения. До сих пор я нашел: [a-z]+(?!\\(), но он возвращает {abc,de,ghi,jkl}. Кто-нибудь знает, как написать правильное регулярное выражение?
Примеры:поиск текста с использованием regex

вар + var_s     => {вар, var_s}

вар + метод (Arg) + var_s     => {вар, Arg, var_s}

строки * string_s + имя_метод (Arg, arg_s)     => {строки, string_s, Arg, arg_s}

вар + 2 * (3 + то) + счетчик (3, пол)     => {вар, что-то, пол}

мне нужно взять все строки состоят из «аз аз _ ', но не заканчивается ( char. Строки: method(, method_name(, count( должны быть опущены из-за (

+0

Вы не хотите 'def' в результате? –

+0

Вы должны лучше объяснить, как должно работать регулярное выражение, например. почему строка 'def' не должна быть частью результата. – Alex

+0

Я предполагаю, что недостающая 'def' - это опечатка –

ответ

0
if (preg_match('/(\w+)/i', $subject, $regs)) { 
    $result = $regs[0]; 
} else { 
    $result = ""; 
} 

(\ W +)

Варианты:. Случай нечувствительным

Совпадение регулярное выражение ниже и захватить его матч в обратной ссылки номер 1 «(\ w +)»

Соответствует одному символу, который является «wo й символ»(буквы, цифры и подчеркивания)«\ ш +»

между одним и неограниченное количество раз, как столько раз, сколько возможно, отдавая при необходимости (жадный)«+»

(RegexBuddy является вашим другом !)

0
if (preg_match('/\b([a-z]+)(?!\(|\))\b/i', $subject, $regs)) { 
    $result = $regs[0]; 
} else { 
    $result = ""; 
} 
Смежные вопросы