cashiba 发表于 2017-10-15 09:57:16

正则表达式里单双引号同时存在的情况下如何转换?[已解决]

本帖最后由 cashiba 于 2017-10-15 12:35 编辑

<div class="box1">
            <div class="mobile-name">
            <a target="_blank" href='ref/html/18173.shtml'>
                   
                            一加手机5
                   
                   
                   - 深圳市万普拉斯科技有限公司
                   
            </a>
            </div>
            <div class="infomation clearfix">
                   
                   
                <div class="infomation-right clearfix"><label class="left">【基本参数】</label><label class="info-width1 left"> 手机类型 </label></div>
                   
            </div>
            
                    <div class="infomation clearfix"><label class="left">【屏幕】</label><label class="info-width2 left">电容屏,多点触控。</label>
                    </div>
            
            
            
            
                    <div class="infomation clearfix"><label class="left">【摄像头】</label><label class="info-width3 left"> 双核对焦,EIS 电子防抖,PDAF相位对焦,人像模式,专业模式,全景模式,像素精选,HDR,RAW Image,屏幕补光,微笑快门,极致美颜。</label></div>
            
            
            
      </div>

如上目标文本。
欲提取其中的如下之标红部分:
<a target="_blank" href='ref/html/18173.shtml'>
                   
                            一加手机5
                   
                   
                   - 深圳市万普拉斯科技有限公司
                   
            </a>
如下正则语式:
<div class="mobile-name">.*?<a target="_blank" href='(.*?)'>(.*?)</a>
在其它正则测试工具里运行结果正常。但是用AU3的 StringRegExp测试没有反应.
怀疑是正则表达式里同时存在单双引号造成了干扰。对AU3的单双引号混合的转换一直晕头.....不知道是不是这个缘故。
请大虾们赐教.....

yamakawa 发表于 2017-10-15 11:24:19

本帖最后由 yamakawa 于 2017-10-15 11:32 编辑

回复 1# cashiba


    仅针对你的例子(?sim)mobile-name.+href='(\V+)'>(.+)</a>

yamakawa 发表于 2017-10-15 11:40:01

回复 1# cashiba


    哦哦。。你想要单双引号都有的啊。。加上就是了(?s)<div class="mobile-name">.*href='(\V+)'>(.+)</a>

cashiba 发表于 2017-10-15 11:49:08

本帖最后由 cashiba 于 2017-10-15 11:55 编辑

回复 2# yamakawa
谢谢~
因为假如目标文件里同时还存在
<div class="box1">
            <div class="aaa">
            <a target="_blank" href='xxx'>

<div class="box2">
            <div class="bbb">
            <a target="_blank" href='YYY'>

<div class="box3">
            <div class="ccc">
            <a target='_parent' href='zzz'>

之类的代码的话,单或双引号内的文字甚至单双引号本身可能会作为正则表达式里的特征或标志性字眼.....
也就是如果需要单双引号同时都存在的情况下,怎样写正则表达式才能得到正常结果呢?
AU3的正则表达式里一定要避开单双引号混合的情况吗?

cashiba 发表于 2017-10-15 12:00:46

回复cashiba
哦哦。。你想要单双引号都有的啊。。加上就是了
yamakawa 发表于 2017-10-15 11:40 http://www.autoitx.com/images/common/back.gif
问题就在这里阿,这个正则表达式如果要写到代码里
$pattern=(?s)<div class="mobile-name">.*href='(\V+)'>(.+)</a>
$pattern=的后面要怎么转换?

cashiba 发表于 2017-10-15 12:22:49

在测试工具里都可以得到结果,就是写进代码里就出错,不知道怎么转换的....
{:face (382):}

yamakawa 发表于 2017-10-15 12:30:00

回复 5# cashiba

这样试试$pattern='(?s)<div class="mobile-name">' & '.*href='& "'(\V+)'>(.+)</a>"

cashiba 发表于 2017-10-15 12:34:54

自己解决了....(?s)<div class='&'"mobile-name"'&">.*href='(\V+)'>(.+)</a>"本帖谢谢yamakawa大侠指点哈~
页: [1]
查看完整版本: 正则表达式里单双引号同时存在的情况下如何转换?[已解决]