2013-03-11 63 views
-1

我有像这样的字符串abc+def(ghi)+jkl,我想得到{abc,ghi,jkl}作为正则表达式的结果。到目前为止,我发现:[a-z]+(?!\\(),但它返回{abc,de,ghi,jkl}。有谁知道如何编写适当的正则表达式?
实例:使用正则表达式寻找文本

变种+ var_s     => {变种,var_s}

变种+方法(ARG)+ var_s     => {变种,精氨酸,var_s}

字符串* string_s + METHOD_NAME(精氨酸,arg_s)    => {串,string_s,精氨酸,arg_s}

变种+ 2 *(3 +的东西)+计数(3,性别)    => {变种,东西,性别}

我需要采取所有字符串包括“AZ了Az _'但不能以( char结尾。字符串:method(, method_name(, count(应该由于省略

+0

你不想在结果中使用“def”吗? – 2013-03-11 14:50:51

+0

你应该更好地解释正则表达式应该如何工作,例如为什么字符串“def”不应该是结果的一部分。 – Alex 2013-03-11 15:03:59

+0

我假设缺少'def'是一个错字 – 2013-03-12 13:25:57

回答

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

(\ W +)

选项:不区分大小写

符合以下正则表达式和捕获其匹配到反向引用号码1«(\ w +)»

匹配单个字符,即“我RD字符”(字母,数字和下划线)«\ w +»

之间一个和无限次,多次,尽可能需要(贪婪)回馈“+”

(使用RegexBuddy是你的朋友!)

0
if (preg_match('/\b([a-z]+)(?!\(|\))\b/i', $subject, $regs)) { 
    $result = $regs[0]; 
} else { 
    $result = ""; 
}