找回密码
 加入
搜索
查看: 10714|回复: 14

[AU3基础] 正则怎样匹配多个“或”关系的字符串

  [复制链接]
发表于 2014-6-25 23:36:48 | 显示全部楼层 |阅读模式
不知道描述会不会使人困惑
题目:如下字符串
<td>K_F10B20CB405E4861E2F4FFFF</td>
<td>0</td>
<td>2014-06-25 06:59:09</td>  
<td>1</td>
<td style="text-align: center;"> <span style="color:red">×</span></td>
<td style="text-align: center; width: 120px;">116.204.95.118_29分钟</td>
</tr>
<tr>
<td>M-F07AB2863A7F7E20EEEE84C9D</td>

我需要匹配出“K_F10B20CB405E4861E2F4FFFF”和“M-F07AB2863A7F7E20EEEE84C9D”,这两串的规则是以“M-”或“K_”开头连续多个字母加数字组合,直到非字母数字字符
我用的正则   (M-)|(K_)[\w\d]+?
用这个匹配出3串;空,"K_","M-";首先有个问题是“[\w\d]+?”没有生效,另外“|”符号将整个正则分割规则我不是很懂,求解惑。3ks
发表于 2014-6-26 00:08:51 | 显示全部楼层
[KM].*(?=<)
发表于 2014-6-26 07:06:08 | 显示全部楼层
按楼主的思路,应该是
((?:M-|K_)\w+)
 楼主| 发表于 2014-6-26 12:58:17 | 显示全部楼层
haijie1223 发表于 2014-6-26 00:08



    谢谢 haijie1223 ,调试可以通过,字符来自网页,以k、m为开始字符匹配一个网页的字段不是很精准
另外你的正则有一点我不太明白“(?=<)”应该表示以“<”结尾吧,那“=”号像是表达式而不应该是个硬匹配字符,能解释下“=”在正则怎么使用的吗,我的帮助文档里没有
如果是要匹配以“</td>”结尾而不是“<”,可以直接写“[KM].*(?=</td>)”吗,调试可以通过单位不知到后面的有没有生效
 楼主| 发表于 2014-6-26 13:04:13 | 显示全部楼层
按楼主的思路,应该是
kevinch 发表于 2014-6-26 07:06



    谢谢 kevinch ,正则符合需求。“?:”看帮助还是不太懂,请问下如果是3段字符字符串可不可以这样写“((?:M-|K_|N-)\w+)”  ?
发表于 2014-6-26 14:01:58 | 显示全部楼层
发表于 2014-6-26 16:40:00 | 显示全部楼层
回复 5# wInkly_cc
?:表示这个括号内的不参与分组,如果分组了会被单独取到
后面那个3段字符串的是对的
 楼主| 发表于 2014-6-26 20:44:41 | 显示全部楼层
回复 6# haijie1223


  谢谢,辛苦了
 楼主| 发表于 2014-6-26 20:44:51 | 显示全部楼层
回复 7# kevinch


    谢谢
发表于 2014-6-26 22:02:57 | 显示全部楼层
我对正规不太懂!这就是很弱.....
发表于 2014-6-27 05:28:13 | 显示全部楼层
(\w[-_]\w+)</td>
发表于 2014-6-27 13:56:03 | 显示全部楼层
帮你顶一下
 楼主| 发表于 2014-7-8 22:46:44 | 显示全部楼层
再请问下,如果要匹配以测试码开始,直到测试码或文本结尾结束怎么匹配,如下面这个例子
td>M-6C269C42F44FA0F32E934D8F8F9D2D</td>
                                   <td>1.1.0.0</td>
<td>M-6C269C42F44FA0F32E934D8F8F9D2D</td>
<td>2014-06-25 03:01:45</td>  
<td>M-6C269C42F44FA0F32E934D8F8F9D2D</td>
aaaaaa

我需要匹配出3组
1.“M-6C269C42F44FA0F32E934D8F8F9D2D</td>
                                   <td>1.1.0.0</td> "
2."M-6C269C42F44FA0F32E934D8F8F9D2D</td>
<td>2014-06-25 03:01:45</td>"  
3."M-6C269C42F44FA0F32E934D8F8F9D2D</td>
aaaaaa"

”((?:M-|K_)\w+)“这个正则匹配出来的就是测试码
这么做是因为以测试码开始,后面有0或1次出现ip,版本,机器码等信息,所以我需要先分割字符串再去正则提取信息,请问能用正则分割或其他方法实现吗,谢谢
发表于 2014-7-9 07:04:15 | 显示全部楼层
((?:M-|K_)[\s\S]+?(?:\<td\>[^<>]*\<\/td\>|$))
这个试下
 楼主| 发表于 2014-7-10 15:23:48 | 显示全部楼层
回复 14# kevinch


    答案很接近了,可能还要你浪费点时间帮忙修改下,我贴下真实的字符串。“116.204.95.200”就是IP,我需要提取出来,版本号可以不用管了。
                 <td>M-3B4F69BF57B286031B6C79AC3</td> 
                                   <td>0</td> 
                  <td>2014-07-10 06:54:20</td>  
                  <td>1</td>
                  <td style="text-align: center;"> <span style="color:red">×</span></td>
                  <td style="text-align: center; width: 120px;">116.204.95.200_19分钟</td>
                   </tr>
                   <tr>
                 <td>M-C2D3B7D5CEB974422D0919242</td> 
                                   <td>2.1.1.1</td> 
                  <td>2014-07-10 06:49:40</td>  
                  <td>1</td>
                  <td style="text-align: center;"> <span onclick="alert('AB534EB2C427BBE9C5FD8D50F15CFABB,EA6A35103C5F31087D2CB6FB14D7C8A3,70837337399BB73A81D96710CE9328FD')">3组</span></td>
                  <td style="text-align: center; width: 120px;">116.204.95.200_27分钟</td>
                   </tr>
                   <tr>
                 <td>M-6C269C42F44FA0F32E934D8F8E9NMT</td> 
                                   <td>2.6.0</td> 
                  <td>2014-07-10 01:41:58</td>  
                  <td>1</td>
                  <td style="text-align: center;"> <span onclick="alert('33AC6E97B7B20A4E444969BA787765D3,1F5F7597D8E618135212EC9115815255,1C0491F59FA4D03754E12CA4445133B7')">3组</span></td>
                  <td style="text-align: center; width: 120px;">/</td>
                   </tr>
                   <tr>
                 <td>M-6C269C42F44FA0F32E934D8F8F9D2D</td> 
                                   <td>1.5.0.0</td> 
                  <td>2014-07-07 10:25:08</td>  
                  <td>1</td>
                  <td style="text-align: center;"> <span onclick="alert('AB534EB2C427BBE9C5FD8D50F15CFABB,EA6A35103C5F31087D2CB6FB14D7C8A3,70837337399BB73A81D96710CE9328FD')">3组</span></td>
                  <td style="text-align: center; width: 120px;">/</td>
                   </tr>
                   <tr>
                 <td>K_2563287E515783F7D4727AB5</td> 
                                   <td>1.6.0</td> 
                  <td>2014-07-08 01:38:41</td>  
                  <td>1</td>
                  <td style="text-align: center;"> <span onclick="alert('6196608085C964C3CE6EAB4C570B4A37,CD849DC39B23FD4DC0307795F0C9BEF6,CF84F9C4D2B25977AAA2E2C31ED46481')">3组</span></td>
                  <td style="text-align: center; width: 120px;">/</td>
                   </tr>
                   <tr>
ip后面一定会有个倒计时时间,小于30分钟
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 10:22 , Processed in 0.097816 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表