我们使用下面的正则表达式来捕获现有的卡号,这些卡号落入特定的垃圾箱,并用于一些分析。
从5开始的卡片箱
^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$从4开始的卡片箱
^4[0-9]{12}(?:[0-9]{3})?$需要捕获一组新的卡片箱(见下文),但上面所示的正则表达式无法捕获它。输入是一个包含16位数字的完整卡号,并分析和检查前6个数字是否落入刚才指定的正则表达式之一。
不幸的是,我们中没有人真正擅长regex,所以我在如何修改regex逻辑以捕获下面的回收箱方面寻求了一些帮助。谢谢
437544
550156
539628
458209
458208发布于 2018-01-29 18:43:19
这是找到这些数字的片段,只有那些。
通过这一工具获得:
ScrnSht01.jpg
注意:这是一个三元树,转化为正则表达式trie,使它成为最快的树。
在这个星球上寻找这些东西。
而且,实际上,获取所有有效的16位数字的bin数字可能会更快,
将其转储到此实用程序中,并生成regex trie。
这是地球上最快的方法。没有其他方法更快。
该实用程序接受无限数量的字符串。
例子-
http://www.regexformat.com/Dnl/_Samples/_Ternary_Tool (Dictionary)/___txt/_ASCII_175,000_word_Mix_A-Z_Multi_Lined.txt
http://www.regexformat.com/Dnl/_Samples/_Ternary_Tool (Dictionary)/___txt/_100_000_Domain_Names.txt
(?:4(?:0(?:2016|632[79])|1(?:4758|7997)|20230|3754[48]|40413|5(?:7(?:377|852)|82(?:0[89]|1[012])|9227)|69679)|5(?:2(?:1570|8243|9909)|39(?:179|628)|50(?:043|156)))
您所要做的就是在正则表达式开始时将其放入断言中:
^(?= <this regex> ) <existing regex> $
实际上,您可以将两个正则表达式合并为一个,给每个正则表达式一个捕获。
组作为标志,说明它有资格使用哪个垃圾桶。
^(?= <this regex> ) (?: (<existing regex for 4>) | (<existing regex for 5>) )$
格式化
(?:
4
(?:
0
(?: 2016 | 632 [79] )
| 1
(?: 4758 | 7997 )
| 20230
| 3754 [48]
| 40413
| 5
(?:
7
(?: 377 | 852 )
| 82
(?: 0 [89] | 1 [012] )
| 9227
)
| 69679
)
| 5
(?:
2
(?: 1570 | 8243 | 9909 )
| 39
(?: 179 | 628 )
| 50
(?: 043 | 156 )
)
)http://www.regexformat.com/scrn7/s7_b1.jpg Sample
第一个基准测试的输入示例是27个条目。
第二个基准测试的输入示例是重复的27个条目,以获得1,000,000个条目。
437544
437548
458212
469679
457377
457852
469679
458212
420230
402016
406327
406329
528243
521570
529909
539179
550043
550156
539628
458209
458208
417997
459227
458210
440413
458211
414758基准- 1
Options: < none >
Completed iterations: 38 / 38 ( x 1000 )
Matches found per iteration: 27
Elapsed Time: 1.008 s, 1008.38 ms, 1008383 µs每秒38,000次迭代*每迭代27次匹配=每秒1,017,857次匹配
基准- 2
Options: < none >
Completed iterations: 1 / 1 ( x 1 )
Matches found per iteration: 1000000
Elapsed Time: 0.96 s, 959.45 ms, 959451 µs每0.96秒1次迭代*每次迭代1,000,000次匹配=每秒1,026,000次匹配
https://stackoverflow.com/questions/48506936
复制相似问题