auto 发表于 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

afan 发表于 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)

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

回复 2# afan


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


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

如可我这样<.+>(.+)<.+> 可以提交取11111.但是2222222却多了〈/A〉

bdancerlc 发表于 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)

shqf 发表于 2012-6-19 12:16:19

回复 3# auto

这种情况用非贪婪模式就行了:'<.+>(.+?)<.+>'

auto 发表于 2012-6-19 12:56:12

回复 4# bdancerlc

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

能解释一下吗?

auto 发表于 2012-6-19 12:57:07

回复 5# shqf


    总搞不清贪婪模式的作用

ooxxgod 发表于 2012-6-19 13:02:22

正则还在学 看看

afan 发表于 2012-6-19 13:25:54

回复afan


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


...
auto 发表于 2012-6-19 11:50 http://www.autoitx.com/images/common/back.gif


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

正则的灵活性是很强的,满足了既定的条件又何必思前想后。如果有更多的情况为何不提出来呢?

bdancerlc 发表于 2012-6-19 13:44:28

回复 4# bdancerlc


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

    在我的表达式中:(?<=>)[^<>\s]+?(?=<)
    (?<=>):表示 与匹配的结果 左边 是 <
    (?=<)    :同理右边<
    [^<>\s] : 不匹配 '<','>',空白符

auto 发表于 2012-6-19 14:22:47

回复 9# afan


从网页提取的……。
前后都还没有其它的字符……
由于是内网的东东,不方便复制传上来。
只能虚拟几个数据……
其实你的方式也可以,就是其它的〈刚好在〉的文字都提取出来……
就我给的演示数据,你的操作方法是最简单。

3mile 发表于 2012-6-19 14:38:09

StringRegExpReplace($str, '<[^>]*>','')

xms77 发表于 2012-6-19 16:16:43

回复 10# bdancerlc
学习了,不过有个笔误,呵呵!

xms77 发表于 2012-6-19 16:25:42

回复 1# auto
凑个闹猛,呵呵
StringRegExp($str, '(?m)>([^><\s]+)<',3)
页: [1]
查看完整版本: 再请教一个正则如何写。