关于正则表达式
关于正则表达式
使用正则表达式辅助工具,RegexTester.exe,可以验证正则写的对不对。 在写XML配置时,正则表达式显得非常的重要,它关系到提取的信息到底是否正确。如果书写错误,会影响下面的过程。下面对常用的正则表达式,进行一个说明。 举例:(1)对这段内容HM.RollupData(newHM.Rollup("cmU5KG2wtg5RGVAGw75afaHg2",null,1,1,"2015-09-21T02x3a53x3a00.757Z","x3cspanemailx3dx22apprentice201201x26x2364x3b126.comx22x3eapprentice126x3cx2fspanx3e" 想提取黄色字体的cmU5KG2wtg5RGVAGw75afaHg2和1 正则表达式:HM.Rollup("([^"]+)",[^,]+,([d]) 解释:HM.Rollup("代表是以HM.Rollup("开头的,是转义字符,因为后面有(,所以才有了。([^"]+)这里的括号()可认为是表示提取的意思,[^”],表示提取除了”的部分,+表示至少重复一次或者多次,紧接着的”表示以”结束。到这里HM.Rollup("([^"]+)"就提取了cmU5KG2wtg5RGVAGw75afaHg2紧接着是一个逗号,[^,]+表示匹配不是逗号的部分一次或者多次,没有加()就意味着只匹配,但是不提取内容,即匹配null。紧接着是一个逗号,接下来的[^,]+表示匹配第二个null,紧接着是一个逗号,接下来的[^,]+表示匹配1,紧接着是一个逗号,([d])有()意味着要提取内容,[d]表示提取匹配一个数字字符。等价于 [0-9]。此处的([d])就提取出了1。 举例:(2)对这段内容 urlPost:'https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&rpsnv=12&ct=1442647827&rver=6.4.6456.0&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fsnt150.mail.live.com%2Fdefault.aspx%3Frru%3Dinbox&lc=1033&id=64855&mspco=1&pcexp=false&bk=1443075601&uaid=56f1c6e7abc041288397ead1bee54918&pid=0'提取单引号里面的部分 正则表达式:urlPosts*:s*'([^']+)' 解释:urlPosts*:s*'表示以urlPosts*:s*'开始,最右边的’表示以’结束。([^']+)表示真正要提取的内容,提取除了’的部分一次或者多次,如此以来便把黄色字体内容提取出来。s表示匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [fnrtv]。*表示匹配零次或多次。一般都用+。 举例:(3)对这段内容 name="PPFT" id="i0327"value="DbvSEykUhYPWX2yssoU1oovfJG!df4bxr4Gi9LO5ITeUv1*stzISiYN8rsc1!Bsmg4frfqILVgxeaZAVy8Hvk*ZtHH*mHRFCzt4uZN8FUo2IpPa6cUBKPYRi9**qlVQ8e*kE8JpJR1auDwiGwkL1r8XEDhgJntONOXjqSGbYuFH8fr0CP052TEPgtGtPMys!bauJqvJLqKWf2f5Wot4azQi*rHxoHCVdFe3PQZfjnGstMoDqGuTUUotYejWH*TpaNA$$"/>'想提取黄色字体的内容。 正则表达式:PPFT.*values*=s*”([^”]+)” 解释:PPFT.*values*=s*”表示PPFT.*values*=s*”开始,最后面的”表示以”结束。PPFT后面的.表示匹配任意一个字符,*表示匹配零次或多次。紧接着是一个value=,s表示匹配任何空白字符,包括空格、制表符、换页符等等。*表示匹配零次或多次。([^”]+) 举例:(4)对这段内容 location.replace("https://snt150.mail.live.com/default.aspx?rru=inbox"); 想提取黄色字体的内容。 正则表达式:location.replaces*(s*”([^”]+) 解释:location.replaces*(s*”表示以location.replaces*(s*”开始, s表示匹配任何空白字符,包括空格、制表符、换页符等等。*表示匹配零次或多次。(表示有个(,是转义字符,紧接着是s,然后是*,s表示匹配任何空白字符,包括空格、制表符、换页符等等。*表示匹配零次或多次。紧接着是个“,这些就是前面location.replace("的表达。([^”]+)表示真正要提取的内容,提取除了”的部分一次或者多次,这样就把黄色字体的内容提取出来。 举例:(5)对这段内容 location.replace ("https://snt150.mail.live.com/default.aspx?rru=inbox");想提取黄色字体的内容。 正则表达式:replaces*(s*“(https://[^/]+/) 解释:replaces*(s*“的解释同例(4),(https://[^/]+/)括号表示要提取的内容,提取https://,[^/]除了/的部分,+表示一次或者多次,然后再加上/。然后提取出来的内容就是https://snt150.mail.live.com/ 举例:(5)对这段内容 New HM.Folder("fljunk","flAAAAAAAAAAAAAAAAAAAAAA2","0",false,"u5783u573eu90aeu4ef6",0)),想提取黄色字体的内容。 正则表达式:Folder(“([^”]+)”,”[^”]+”[^”]+”[^”]+”[^”]+”([^”]+)” 解释:Folder("表示以Folder("开头,(是因为(要加转义字符。([^"]+)" 提取不是"的内容一次或多次,以"结束,提取出来了fljunk。然后紧跟一个逗号,逗号后面是引号",[^”]+匹配不是引号的部分一次或者多次但不提取,紧接着是一个引号",此时把flAAAAAAAAAAAAAAAAAAAAAA2匹配出来了,下一个[^”]+匹配不是引号"的部分一次或者多次,把0,0匹配出来,紧接着是一个引号",下一个[^”]+匹配不是引号"的部分一次或者多次,把0匹配出来,紧接着是一个引号",下一个[^”]+匹配不是引号"的部分一次或者多次,把false,匹配出来,紧接着是一个引号",([^”]+)”提取不是引号"的部分,以引号"结束,这样就把u5783u573eu90aeu4ef6提取出来。 小结: (1)正则表达式可以有不同的写法,只要能达到提取想要内容的效果,形式可以多种多样。 (2)有时,写的一个正则表达式,把符合正则表达式的所有内容都提取出来了,不止一条,中间一条是你所想要提取的内容,此时,就要考虑正则表达式提取内容不唯一的情况的解决方法。方案一:可能是写的正则有问题,多找找提取的几条数据的区别,比如前后的字符。方案二:可以通过多次提取的方法,在提取的不止一条内容的情况下,再写正则表达式,提取出来自己想要的内容。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |