b18821 发表于 2015-11-26 23:59:15

正则匹配求助(已解决)

本帖最后由 b18821 于 2015-11-27 18:03 编辑

有几种可能:
我是 小王王(中间若干空格)
我是大王长木(中间无空格)
我是:小王小   (中间是冒号半角)
我是:李小王小李 (中间是冒号全角)
我是:   张小王 (中间是全或半角冒号混合若干空格)

现在要匹配后面的名称,正则怎么写?
就是得到:小王王 大王长木 小王小 李小王小李 张小王

b18821 发表于 2015-11-27 00:16:35

不好意思没说全,上面的”是” 也可以是”叫””为”等。

haijie1223 发表于 2015-11-27 08:07:32

我[是为叫].*?([\x{4e00}-\x{9fa5}]+)

b18821 发表于 2015-11-27 14:42:08

版主啊,我这测试不行啊!
#
include <StringConstants.au3>

Local $string='我是 小王王(中间若干空格)我是大王长木(中间无空格)我是:小王小   (中间是冒号半角)我是:李小王小李 (中间是冒号全角)我是:   张小王 (中间是全或半角冒号混合若干空格)'
Local $aArray = StringRegExp($string, '我[是为叫].*?([\x{4e00}-\x{9fa5}]+)', $STR_REGEXPARRAYFULLMATCH)
For $i = 0 To UBound($aArray) - 1
    MsgBox(0, "我是可爱的结果 " & $i, $aArray[$i])
Next

b18821 发表于 2015-11-27 14:43:49

#include <StringConstants.au3>

Local $string='我是 小王王(中间若干空格)我是大王长木(中间无空格)我是:小王小   (中间是冒号半角)我是:李小王小李 (中间是冒号全角)我是:   张小王 (中间是全或半角冒号混合若干空格)'
Local $aArray = StringRegExp($string, '我[是为叫].*?([\x{4e00}-\x{9fa5}]+)', $STR_REGEXPARRAYFULLMATCH)
For $i = 0 To UBound($aArray) - 1
    MsgBox(0, "我是可爱的结果 " & $i, $aArray[$i])
Next

afan 发表于 2015-11-27 15:23:25

回复 5# b18821


    为什么你测试字符串要变成那样?Local $string='我是 小王王' & @CRLF & '我是大王长木' & @CRLF & '我是:小王小' & @CRLF & '我是:李小王小李' & @CRLF & '我是:   张小王'
Local $aArray = StringRegExp($string, '我[是为叫].*?([\x{4e00}-\x{9fa5}]+)', 3)
For $i = 0 To UBound($aArray) - 1
        MsgBox(0, "我是可爱的结果 " & $i, $aArray[$i])
Next

b18821 发表于 2015-11-27 17:43:43

版主好厉害啊!!
嗯...
.点 匹配任何单个字符*重复任意次?重复0、1次 学习了!

能否一题多解呢?还有没有别的答案!

b18821 发表于 2015-11-27 17:46:51

再请教下版主,里面的?号我还没理解,它的作用域是谁呢?是.*,还是所有前面的模式?

haijie1223 发表于 2015-11-27 20:24:58

回复 6# afan


    打酱油路过此地,幸会幸会...A版,我就是想问问撸主为啥要那么匹配?

b18821 发表于 2015-11-28 10:05:41

回复 9# haijie1223


    为了写一个自动回复的代码,是java下的,这个au3的匹配的确是很完美!!

b18821 发表于 2015-11-28 10:10:42

回复 9# haijie1223


    回复带人的名字,可以显的亲切一点.
比如: 王小小 亲,你好.....
页: [1]
查看完整版本: 正则匹配求助(已解决)