heavenm 发表于 2018-1-11 00:07:22

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

本帖最后由 heavenm 于 2018-1-11 00:09 编辑

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

不匹配
1212123
333331117

或者有什么方法能统计一串数字里有多少个独特元素不

heavenm 发表于 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)感觉太麻烦了,有正则可以一句搞定不,提取独立元素

fenhanxue 发表于 2018-1-11 11:04:18

正则不会#include <Array.au3>
$t = 23323234
$a = StringSplit($t,'',2)
$a = _ArrayUnique($a)
_ArrayDisplay($a)

zghwelcome 发表于 2018-1-11 11:21:11

题意没看明白,不知道是不是这样$str = '03222622222221'
$out = StringRegExpReplace($str,'(\d)(?=(?:.*?\1))','')
MsgBox(0,0,$out)

xzf680 发表于 2018-1-11 11:36:31

{:face (197):}
题意没看明白,仰望楼上与楼下的高端玩家们

kevinch 发表于 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是这个意思吗?

heavenm 发表于 2018-1-12 17:06:49

是这个意思吗?
kevinch 发表于 2018-1-11 19:16 http://www.autoit3.cn/images/common/back.gif


    1212122 这个匹配不到

heavenm 发表于 2018-1-12 17:16:03

奉献一段找手机靓号的代码#include <File.au3>
Dim $__file

#cs
_FileReadToArray('PhoneNumber.txt', $__file)
;1xxabcdabcd
For $i = 1 To $__file
        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 == $__b 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


hnfeng 发表于 2018-1-12 17:32:06

回复 8# heavenm


    厉害{:face (293):}

能否继续分享一些靓号正则表达式?

heavenm 发表于 2018-1-12 18:17:34

回复heavenm


    厉害

能否继续分享一些靓号正则表达式?
hnfeng 发表于 2018-1-12 17:32 http://www.autoit3.cn/images/common/back.gif

构思中,哈你对这个感兴趣的话,有靓号规则分享给我!

hnfeng 发表于 2018-1-15 10:20:48

回复 10# heavenm


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

可以试试一起想一些

hnfeng 发表于 2018-1-15 12:28:22

本帖最后由 hnfeng 于 2018-1-15 13:54 编辑

构思中,哈你对这个感兴趣的话,有靓号规则分享给我!
heavenm 发表于 2018-1-12 18:17 http://www.autoit3.cn/images/common/back.gif

样式的表达(有了样式,正则就出来了)
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
....
太多了
{:face (368):}

heroxianf 发表于 2018-1-15 14:44:38

感觉阔以,跟我想了解的有点想通。

kachiko 发表于 2018-1-16 15:09:48

正则看不懂,啊哈哈{:face (394):}

hnfeng 发表于 2018-1-16 16:24:50

构思中,哈你对这个感兴趣的话,有靓号规则分享给我!
heavenm 发表于 2018-1-12 18:17 http://www.autoit3.cn/images/common/back.gif


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

初学正则表达式,请指教
页: [1] 2
查看完整版本: 正则问题!比较烧脑!怎么匹配纯AB数字组合?