找回密码
 加入
搜索
查看: 3085|回复: 13

[AU3基础] 再请教一个正则如何写。

 火.. [复制链接]
发表于 2012-6-19 11:30:49 | 显示全部楼层 |阅读模式
本帖最后由 auto 于 2012-6-19 11:35 编辑

实在不会上来请教一下
例如
<AB CD>111111</AB>
<AB CD DD=1%><A HREF = "HTTP://JDKFAJ.COM.CCNN">2222222</A></AB>

结果
111111
2222222
发表于 2012-6-19 11:41:14 | 显示全部楼层
Local $Str = _
                '<AB CD>111111</AB>' & @CRLF & _
                '<AB CD DD=1%><A HREF = "HTTP://JDKFAJ.COM.CCNN">2222222</A></AB>' & @CRLF
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, '<.+?>', '')
MsgBox(0, '替换结果', $Test)
 楼主| 发表于 2012-6-19 11:50:48 | 显示全部楼层
回复 2# afan


举例比较简单,这个确实可以这样……但在实际应用中……还有其它文字……不好提取


A版你有没有出过正则教程?

如可我这样<.+>(.+)<.+> 可以提交取11111.但是2222222却多了〈/A〉
发表于 2012-6-19 12:08:42 | 显示全部楼层
练练手,献丑了!...

#include <Array.au3>
Local $Str = _
                '<AB CD>111111</AB>' & @CRLF & _
                '<AB CD DD=1%><A HREF = "HTTP://JDKFAJ.COM.CCNN">2222222</A></AB>' & @CRLF
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '(?<=>)[^<>\s]+?(?=<)', 3)
_ArrayDisplay($Test)

评分

参与人数 1金钱 +87 贡献 +9 收起 理由
auto + 87 + 9 谢谢帮忙

查看全部评分

发表于 2012-6-19 12:16:19 | 显示全部楼层
回复 3# auto

这种情况用非贪婪模式就行了:'<.+>(.+?)<.+>'
 楼主| 发表于 2012-6-19 12:56:12 | 显示全部楼层
回复 4# bdancerlc

由于测试例子给数据少,基本满足需求了……个别过滤可能再处理一下。
   
完全看不懂……这个正则是什么意思。

能解释一下吗?
 楼主| 发表于 2012-6-19 12:57:07 | 显示全部楼层
回复 5# shqf


    总搞不清贪婪模式的作用
发表于 2012-6-19 13:02:22 | 显示全部楼层
正则还在学 看看
发表于 2012-6-19 13:25:54 | 显示全部楼层
回复  afan


举例比较简单,这个确实可以这样……但在实际应用中……还有其它文字……不好提取


...
auto 发表于 2012-6-19 11:50



    如果你举的例子很简单,而我写的表达式又写得很复杂那又该怎么说呢?

正则的灵活性是很强的,满足了既定的条件又何必思前想后。如果有更多的情况为何不提出来呢?
发表于 2012-6-19 13:44:28 | 显示全部楼层
回复 4# bdancerlc


    (?=xxx)    :   正向预搜索,判断当前位置右侧是否能匹配指定表达式
    (?<=xxx)  :   反向预搜索,判断当前位置左侧是否能够匹配指定表达式
    [^xxx]      :   表示匹配的结果中不包含  xxx

    在我的表达式中:(?<=>)[^<>\s]+?(?=<)
    (?<=>)  :表示 与匹配的结果 左边 是 <
    (?=<)    :同理  右边  <
    [^<>\s] : 不匹配 '<','>',空白符
 楼主| 发表于 2012-6-19 14:22:47 | 显示全部楼层
回复 9# afan


从网页提取的……。
前后都还没有其它的字符……
由于是内网的东东,不方便复制传上来。
只能虚拟几个数据……
其实你的方式也可以,就是其它的〈刚好在〉的文字都提取出来……
就我给的演示数据,你的操作方法是最简单。
发表于 2012-6-19 14:38:09 | 显示全部楼层
StringRegExpReplace($str, '<[^>]*>','')
发表于 2012-6-19 16:16:43 | 显示全部楼层
回复 10# bdancerlc
学习了,不过有个笔误,呵呵!
发表于 2012-6-19 16:25:42 | 显示全部楼层
回复 1# auto
凑个闹猛,呵呵
StringRegExp($str, '(?m)>([^><\s]+)<',3)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 13:31 , Processed in 0.152500 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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