要在下面文本查找匹配ef内容:
"abcd]ef" 'abcd]ef' =abcd]ef =abcd]ef >abcd]ef<
"abcdef" 'abcdef' =abcdef =abcdef >abcdef<
"ef" 'ef' =ef =ef >ef<
"]ef" '+ef' =-ef =*ef >/ef<
 "abcdef"    "ef" = abc ="d ef = ef ' 'abcdef' 'ef' >abcdef< >ef< >fsdgs>
要求ef必须(以"开始,则以"结束;或以'开始,则以'结束;或以>开始,则以<结束;或以=开始,则以空格或>结束)
且其开始和结束条件字符不包含在匹配内容中
"abcd]ef" 'abcd]ef' =abcd]ef =abcd]ef >abcd]ef<
"abcdef" 'abcdef' =abcdef =abcdef >abcdef<
"ef" 'ef' =ef =ef >ef<
"]ef" '+ef' =-ef =*ef >/ef<
 "abcdef"    "ef" = abc ="d ef = ef ' 'abcdef' 'ef' >abcdef< >ef< >fsdgs>
求返回这个结果的正则表达式
曾用过这个正则表达式:(?<=')ef(?=')|(?<=")ef(?=")|(?<=>)ef(?=<)|(?<==)ef(?=( |>))
但在js的RegEx的对象不能用<=,请高手指点

解决方案 »

  1.   

    刚才断网了.郁闷.
    就楼主的问题,如果其运用环境是在JS当中,确实比较麻烦
    在这里用了一个折中的方案,希望可以帮到楼主
    以下是Demo
    因为不能指定匹配字符的前置条件预搜索,所以我采用直接指定的方式,为的是匹配我们需要的内容
    但这样会把我们指定的前置字符一起写入匹配,不过处理这个就比较简单了,直接把匹配的前置字符去掉,即完全是满足条件的匹配了<script type="text/javascript">
    window.onload=function MatchDemo(){
       var r, re;         // 声明变量。
       var s = "\"ef\"\'ef\' =ef   =ef  > ef < \"]ef\"\'+ef\'=-ef=*ef>/ef<\"abcdef\"\"ef\"=abc";
       s=s+"   =\"d   ef   =   ef   \'   \'abcdef\'   \'ef\'   > abcdef <   > ef <   > fsdgs> ";
    alert(s);   re = /\'ef(?=\')|\"ef(?=\")|>\s*ef\s*(?=<)|=ef(?=[\s])/ig; 
       
       r = s.match(re);  
       alert(r.length); 
       for(i=0;i<r.length;i++)
       {
         alert(r[i].substr(1));
       }
     
                          
    }</script>
      

  2.   

    http://hi.baidu.com/netqing/blog/item/a0f2fecd7f29a3550fb345c8.html 这里可能有帮到你的