2013-03-11 23 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 = ""; 
}