有一段正则,可以识别img标记的src和style的值。正则表达式为:
(?is)<img[^>]*?(?:\bsrc)\s*=\s*(['""]?)(?<imgsrc>[^'""\s>]+)\1[^>]*\bstyle[\s]*=[\s]*(['""]?)(?<style>[^'""\s>]+)\2[^>]*>验证的文本为:
<img   src=abcde.jpg   style   =    width:800;height:600   >
可以捕获到src值为abcde.jpg
style值为 width:800;height:600
--------------------------------------
但是如果src和style调换一下顺序就没办法识别了
<img  style = width:800;height:600  src=abcde.jpg >要怎样修改正则,才能够不管顺序,同时识别style和src的值呢?

解决方案 »

  1.   

    无人答哦
    参照http://topic.csdn.net/u/20090803/17/7bb3267c-321d-4d9b-aa34-d157a63e954d.html
    修改成如下的正则表达式,可以不管前后顺序,同时识别出来style和src的值。
    <img\b(?=(?:(?!\bstyle\s*=\s*).)*\bstyle\s*=\s*(['"\s]?)([^'">]+)\1)(?:(?!\bsrc\s*=\s*).)*\bsrc\s*=\s*(['"\s]?)([^'">]+)\3[^>]*>不过,不能给捕获组命名,否则就捕获不到了,不知何故。仔细想了一想,因为还存在只有src,没有style的情形,所以不在考虑同时捕获style和src值了,还是用分别捕获的方式吧。
      

  2.   

    你可以分两步走:
    1。 先匹配出img标签: (?i)<img[^>]*?>
    2。 在1匹配的基础上分别匹配出你想要的
      

  3.   

    一个正则也可以,顺序环视(?is)<img(?=[^>]*?style\s*=\s*(?<style>[^'""\s>]+))[^>]*?src\s*=\s*(?<src>[^'""\s>]+)[^>]*>
      

  4.   

    学习了
    根据大婶的 修改版:(?is)<img(?=[^>]*?src\s*=(['"\s]?)(?<src>[^'"\s]+)\1)[^>]*?style\s*=(['"\s]?)(?<style>[^'"\s]+)\2[^>]*?>
      

  5.   

    顺序环视http://blog.csdn.net/lxcnn/article/details/4304651
    说实话,看了半天,还是一知半解。姑且这样吧,回头再仔细研究吧。
    谢谢大家!