找回密码
 加入
搜索
查看: 4890|回复: 15

[AU3基础] 正则问题!比较烧脑!怎么匹配纯AB数字组合?

 火..   [复制链接]
发表于 2018-1-11 00:07:22 | 显示全部楼层 |阅读模式
本帖最后由 heavenm 于 2018-1-11 00:09 编辑

比如,由任意2-3种数字组成的字符串
匹配
12121212
33334433
55666666


不匹配
1212123
333331117

或者有什么方法能统计一串数字里有多少个独特元素不
 楼主| 发表于 2018-1-11 00:14:39 | 显示全部楼层
$t = 23323234
$n = StringLen($t)
Dim $tt
For $i = 1 To $n
        
        If Not StringRegExp( $tt,StringMid($t, $i, 1)) Then $tt&=StringMid($t, $i, 1)
Next
MsgBox(0, '', $tt)
感觉太麻烦了,有正则可以一句搞定不,提取独立元素
发表于 2018-1-11 11:04:18 | 显示全部楼层
正则不会
#include <Array.au3>
$t = 23323234
$a = StringSplit($t,'',2)
$a = _ArrayUnique($a)
_ArrayDisplay($a)
发表于 2018-1-11 11:21:11 | 显示全部楼层
题意没看明白,不知道是不是这样
$str = '03222622222221'
$out = StringRegExpReplace($str,'(\d)(?=(?:.*?\1))','')
MsgBox(0,0,$out)

评分

参与人数 1金钱 +70 贡献 +20 收起 理由
heavenm + 70 + 20 完美解决!感谢!

查看全部评分

发表于 2018-1-11 11:36:31 | 显示全部楼层

题意没看明白,仰望楼上与楼下的高端玩家们
发表于 2018-1-11 19:16:03 | 显示全部楼层
#include <array.au3>
$str="12121212" & @CRLF & _
                "33334433" & @CRLF & _
                "55666666" & @CRLF & _
                "1212123" & @CRLF & _
                "333331117" & @CRLF & _
                "343434"
$arr=StringRegExp($str,"(?m)^(?:\d{2}){1,}(?=\v|$)",3)
If IsArray($arr) Then 
        _ArrayDisplay($arr)
EndIf
是这个意思吗?

评分

参与人数 1金钱 +80 贡献 +20 收起 理由
heavenm + 80 + 20 完美!!就是这个意思的

查看全部评分

 楼主| 发表于 2018-1-12 17:06:49 | 显示全部楼层
是这个意思吗?
kevinch 发表于 2018-1-11 19:16



    1212122 这个匹配不到
 楼主| 发表于 2018-1-12 17:16:03 | 显示全部楼层
奉献一段找手机靓号的代码
#include <File.au3>
Dim $__file

#cs
_FileReadToArray('PhoneNumber.txt', $__file)
;1xxabcdabcd
For $i = 1 To $__file[0]
        If _FilterNumbers($__file[$i]) > 1 Then MsgBox(0, _FilterNumbers($__file[$i]), $__file[$i])
Next
#ce
MsgBox(0, '靓号等级', _FilterNumbers('15012121212'))
Func _FilterNumbers($__number)
        If StringIsSpace($__number) Then Return SetError(0)
        Local $__tempText, $__level
        ;★★★★★abcdabcd
        $__a = StringRegExp($__number, '\d{3}(\d{4})', 3)
        $__b = StringRegExp($__number, '\d{7}(\d{4})', 3)
        If $__a[0] == $__b[0] Then $__level += 3


        $__UniqueNumber=StringRegExpReplace(stringMid($__number, 4),'(\d)(?=(?:.*?\1))','')
        If StringLen($__UniqueNumber) <= 2 Then $__level += 5 ;纯AB
        If StringLen($__UniqueNumber) <= 3 Then $__level += 2 ;纯ABC

        If StringRegExp($__number, '(\d\d)\1') Then $__level += 1;ABAB
        If StringRegExp($__number, '(\d)\1(\d)\2') Then $__level += 1;AABB
        
        If StringRegExp($__number, '(\w)\1(?!\1)(\w)\2(?!\1|\2)(\w)\3') Then $__level += 2;AABBCC
        If StringRegExp($__number, '^\d*(\d)\1\1(\d)\2\2\d*) Then $__level += 2;AAABBB
        If StringRegExp($__number, '^(\d)(\d)\1\2\1\2\1\2) Then $__level += 2;ABABAB
        If StringRegExp($__number, '^(\d)(\d)(\d)\1\2\3) Then $__level += 2;ABCABC
        If StringRegExp($__number, '^(\d)(\d)\2\1\2\2) Then $__level += 2;ABBABB
        If StringRegExp($__number, '^(\d)\1(\d)\1\1\2) Then $__level += 2;AABAAB
        If StringRegExp($__number, '^\d*(\d)\1{4,}\d*) Then $__level += 2;5-8重复
        Return $__level
EndFunc   ;==>_FilterNumbers
发表于 2018-1-12 17:32:06 | 显示全部楼层
回复 8# heavenm


    厉害  

能否继续分享一些靓号正则表达式?
 楼主| 发表于 2018-1-12 18:17:34 | 显示全部楼层
回复  heavenm


    厉害  

能否继续分享一些靓号正则表达式?
hnfeng 发表于 2018-1-12 17:32


构思中,哈你对这个感兴趣的话,有靓号规则分享给我!
发表于 2018-1-15 10:20:48 | 显示全部楼层
回复 10# heavenm


    我没有,只是突然感兴趣了。靓号的样式太多了,可能会想到很多……

可以试试一起想一些
发表于 2018-1-15 12:28:22 | 显示全部楼层
本帖最后由 hnfeng 于 2018-1-15 13:54 编辑
构思中,哈你对这个感兴趣的话,有靓号规则分享给我!
heavenm 发表于 2018-1-12 18:17


样式的表达(有了样式,正则就出来了)
ABCDEFGH 连续递增数字
      ABCD 可表示1234,2345,6789...
      ACEG 可表示1357,2468...
      ADG 可表示 147,258,369
      DCBA 可表示 4321,8765...
QRST 第二组连续递增数字
AAAA 重复数字
QQQQ 第二组重复数字
x 1个数字
* 0个或多个
j 1个或多个

含一组连续递增数字组
1xxABCDEFGH
1xx*ABCDEFG*
1xx*ABCDEF*
1xx*ABCDE*
1xx*ABCD*
1xx*ABC*
1xx*ACEG*
1xx*ACE*
1xx*ADG*

含一组连续递增数字组且位于尾部
1xxABCDEFGH
1xxjABCDEFG
1xxjABCDEF
1xxjABCDE
1xxjABCD
1xxjABC
1xxjACEG
1xxjACE
1xxjADG

含一组连续递增数字组且位于第7位
1xxACEG*
1xxxACE*
1xxxADG*

含两组连续递增数字组
1xxABCDQRST
1xxxABCxQRS
1xxABCxQRSx
1xx*ABCQRS*

含一组重复数字
1xxAAAAAAAA
1xx*AAAAAAA*
1xx*AAAAAA*
1xx*AAAAA*
1xx*AAAA*
1xx*AAA*

含两组重复数字
1xxAAAAQQQQ
1xx*AAA*QQQ*

递增+重复
1xxABCDABCD
1xxxABCxABC
1xx*ABC*ABC*
1xxQABCRABC
1xxABABABAB
1xx*ABABAB*
1xxxxABxxAB
1xxABQRABQR
....
太多了
发表于 2018-1-15 14:44:38 | 显示全部楼层
感觉阔以,跟我想了解的有点想通。
发表于 2018-1-16 15:09:48 | 显示全部楼层
正则看不懂,啊哈哈
发表于 2018-1-16 16:24:50 | 显示全部楼层
构思中,哈你对这个感兴趣的话,有靓号规则分享给我!
heavenm 发表于 2018-1-12 18:17



http://www.autoit3.cn/thread-56415-1-1.html

初学正则表达式,请指教
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 20:55 , Processed in 0.089609 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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