比如说网页内有很多很长的字符串待提取,如下
abcdkkkefgnothingstartcontentendabcd是待提取字符串1左侧固定特征
kkk是待提取字符串1
efg是待提取字符串1右侧固定特征nothing是一长串无用的数据,无需提取start是待提取字符串2左侧固定特征
content是待提取字符串2
end是待提取字符串2右侧固定特征实际过程中字符串可能含有中文符号等各种网页源码中可能包含的东西
现在要提取kkk、content,求针对上述这种的正则写法,越通用越好(匹配不了时执行时间不能过长,我曾经用了好多贪婪结果悲剧了,偶只会用贪婪)这里只是举例,其实要提取的信息可能有20多个,我曾经自己写了个正则,匹配时毫无问题,但一旦不匹配,就导致匹配的函数执行时间过长,几分钟都没解决,求问有没有相对于这种的正则表达式的写法呢?高手帮一下吧正则表达式网页源码分析

解决方案 »

  1.   

    設置個timeout, 正則只能是有規律的情況下對應去寫
      

  2.   

    (?!end).为什么还有个.呢?起到什么作用?像我上面这么长串要匹配的话是不是这样写呢?
    abcdkkkefgnothingstartcontentend(?<=abcd)((?!efg).)*?(?=efg).*?(?<=start)((?!end).)*?(?=end)
      

  3.   

    正则:(?<=abcd).*(?=efg)|(?<=start).*(?=end) 能匹配你需要的结果
    2楼这个((?!end).)*? 的意思是匹配end后面不为end的字符
    你的abcd和efg和start和end是固定的,要其中间的字符就用我上面的正则就可以了