正则问题!比较烧脑!怎么匹配纯AB数字组合?
本帖最后由 heavenm 于 2018-1-11 00:09 编辑比如,由任意2-3种数字组成的字符串
匹配
12121212
33334433
55666666
不匹配
1212123
333331117
或者有什么方法能统计一串数字里有多少个独特元素不 $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)感觉太麻烦了,有正则可以一句搞定不,提取独立元素 正则不会#include <Array.au3>
$t = 23323234
$a = StringSplit($t,'',2)
$a = _ArrayUnique($a)
_ArrayDisplay($a) 题意没看明白,不知道是不是这样$str = '03222622222221'
$out = StringRegExpReplace($str,'(\d)(?=(?:.*?\1))','')
MsgBox(0,0,$out) {:face (197):}
题意没看明白,仰望楼上与楼下的高端玩家们 #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是这个意思吗? 是这个意思吗?
kevinch 发表于 2018-1-11 19:16 http://www.autoit3.cn/images/common/back.gif
1212122 这个匹配不到 奉献一段找手机靓号的代码#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
回复 8# heavenm
厉害{:face (293):}
能否继续分享一些靓号正则表达式? 回复heavenm
厉害
能否继续分享一些靓号正则表达式?
hnfeng 发表于 2018-1-12 17:32 http://www.autoit3.cn/images/common/back.gif
构思中,哈你对这个感兴趣的话,有靓号规则分享给我! 回复 10# heavenm
我没有,只是突然感兴趣了。靓号的样式太多了,可能会想到很多……
可以试试一起想一些 本帖最后由 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):} 感觉阔以,跟我想了解的有点想通。 正则看不懂,啊哈哈{:face (394):} 构思中,哈你对这个感兴趣的话,有靓号规则分享给我!
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