使用正则表达式查找文本

时间:2013-03-11 14:46:49

标签: expression

我有这样的字符串abc+def(ghi)+jkl,我希望得到{abc,ghi,jkl}作为正则表达式的结果。到目前为止,我发现:[a-z]+(?!\\()但它返回{abc,de,ghi,jkl}。有谁知道如何写正确的正则表达式?
示例:

  

var + var_s => { var,var_s }

     

var + method(arg)+ var_s => { var,arg,var_s }

     

string * string_s + method_name(arg,arg_s)=> { string,string_s,arg,arg_s }

     

var + 2 *(3 + something)+ count(3,gender)=> { var,某事,性别}

我需要将所有字符串组成'a-z A-z _'但不以(字符结尾。字符串:由于

),因此应省略method(, method_name(, count(

3 个答案:

答案 0 :(得分:0)

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

(\ W +)

选项:不区分大小写

匹配下面的正则表达式并将其匹配捕获到反向引号1«(\ w +)»

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

在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)«+»

(regexbuddy是你的朋友!)

答案 1 :(得分:0)

我在http://msdn.microsoft.com/en-us/library/az24scfc.aspx找到了解决方案:

  

\ B [A-ZA-Z _] +(?!\()\ B'/ P>

答案 2 :(得分:0)

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