3D/P3/P5 正则表达式查询详细说明文档
目录
- 概述
- 基础知识
- 组三号码查询
- 组六号码查询
- 豹子号码查询
- 各类位数一样号码查询
- 实用查询示例
- P5数据查询
- 常见问题
概述
本软件支持使用正则表达式进行高级号码查询。当输入包含特殊字符时,系统会自动识别为正则表达式查询模式。
识别规则:如果输入包含以下任一字符,系统将识别为正则表达式:
- * . ^ $ [ ] ( ) + ? | { }
数据类型:
- 3D数据:3位数字(百位、十位、个位)
- P3数据:3位数字(百位、十位、个位)
- P5数据:5位数字(百位、十位、个位、第四位、第五位)
基础知识
一、号码类型定义
1. 豹子号码(AAA型)
- 定义:三个数字完全一样
- 示例:111, 222, 333, 444, 555, 666, 777, 888, 999, 000
- 特点:只有10种可能(000-999)
2. 组三号码(AAB/ABA/BAA型)
- 定义:有两个数字一样,另一个不同
- 示例:
- AAB型:112, 223, 331(前两位一样)
- ABA型:121, 232, 313(首尾一样)
- BAA型:211, 322, 133(后两位一样)
- 特点:共有90种可能(10×9=90)
3. 组六号码(ABC型)
- 定义:三个数字都不一样
- 示例:123, 456, 789, 135, 246, 357
- 特点:共有120种可能(C(10,3)×3!=120)
二、正则表达式基本符号
|
符号 |
说明 |
示例 |
|
. |
匹配任意单个数字 |
1.3 匹配 123, 153, 183 等 |
|
* |
匹配前面的字符0次或多次 |
1* 匹配 1, 11, 111 等 |
|
+ |
匹配前面的字符1次或多次 |
1+ 匹配 1, 11, 111 等 |
|
? |
匹配前面的字符0次或1次 |
1? 匹配空或1 |
|
^ |
匹配字符串开始 |
^7 匹配百位是7的号码 |
|
$ |
匹配字符串结束 |
5$ 匹配个位是5的号码 |
|
[0-9] |
匹配0-9任意数字 |
[5-9] 匹配5,6,7,8,9 |
|
[^5] |
匹配不是5的任意数字 |
[^5] 匹配0,1,2,3,4,6,7,8,9 |
|
( ) |
分组,用于引用 |
(.)1 匹配一样数字 |
|
1 |
引用第一个分组 |
(.)1 匹配11, 22, 33 等 |
|
| |
或运算符 |
1|2 匹配包含1或2的号码 |
|
{n} |
匹配n次 |
[0-9]{3} 匹配3位数字 |
组三号码查询
一、查询所有组三号码
方法1:使用分组引用(推荐)
表达式:^(.)1(?!1).$|^(.)(?!2).2$|^(?!.)..(.)3$
说明:
- ^(.)1(?!1).$:匹配AAB型(前两位一样,第三位不同)
- ^(.)(?!2).2$:匹配ABA型(首尾一样,中间不同)
- ^(?!.)..(.)3$:匹配BAA型(后两位一样,第一位不同)
简化表达式(更易理解):
^(.)1[^1]$|^(.)[^2]2$|^[^.]..(.)3$
示例匹配:
- 112, 223, 331(AAB型)
- 121, 232, 313(ABA型)
- 211, 322, 133(BAA型)
方法2:排除豹子和组六
表达式:^(?!(d)1{2}$)(.)(.)(.)(?:.*2.*3|.*2.*4|.*3.*4)$
说明:先排除豹子(三个一样),再匹配有两个一样数字的号码。
二、查询特定组三号码
1. 查询百位和十位一样的组三(AAB型)
表达式:^(.)1[^1]$
说明:
- ^:开始
- (.):捕获第一个数字(百位)
- 1:引用第一个分组(十位与百位一样)
- [^1]:个位与百位不同(注意:[^1]在某些正则引擎中可能不支持,可用.取代)
- $:结束
修正表达式(兼容性更好):
^(.)1(?!1).$
示例匹配:112, 223, 331, 445, 556
2. 查询百位和个位一样的组三(ABA型)
表达式:^(.)(?!1).1$
说明:
- ^:开始
- (.):捕获百位数字
- (?!1):十位与百位不同(负向前瞻)
- .:十位任意数字
- 1:个位与百位一样
- $:结束
示例匹配:121, 232, 313, 454, 565
3. 查询十位和个位一样的组三(BAA型)
表达式:^(?!.)..(.)1$
说明:
- ^:开始
- (?!.):百位与十位不同(负向前瞻,这里用.表明任意)
- ..:百位和十位(任意)
- (.):捕获十位数字
- 1:个位与十位一样
- $:结束
修正表达式(更准确):
^[^.]..(.)1$
示例匹配:211, 322, 133, 544, 655
4. 查询包含特定数字的组三
查询包含数字5的组三号码:
表达式:^(.)1(?!1).$|^(.)(?!2).2$|^[^.]..(.)3$(先匹配所有组三,再手动筛选)
更准确的方法:
^(5)1[^5]$|^(5)[^5]1$|^[^5]..(5)3$
说明:匹配包含5的组三号码(55X, 5X5, X55)
示例匹配:551, 552, 515, 525, 155, 255
组六号码查询
一、查询所有组六号码
表达式:^(?!(d)1{1,})(.)(.)(.)(?!.*2.*3.*4.*2|.*2.*3.*4.*3|.*2.*3.*4.*4)$
说明:这个表达式比较复杂,实际使用中提议用更简单的方法。
简化方法(推荐):
^(?!(d)1{1,})(.)(.)(.)(?!23|24|34)$
更实用的方法(排除豹子和组三):
^(?!(d)1{2}$)(?!(d)1(?!1).$|(d)(?!3).3$|^[^.]..(d)4$).{3}$
说明:
- ^(?!(d)1{2}$):排除豹子(三个一样)
- (?!(d)1(?!1).$|(d)(?!3).3$|^[^.]..(d)4$):排除组三(两个一样)
- .{3}$:匹配三位数字
最实用的方法(推荐):
^(.)(?!1)(.)(?!1|2).$
说明:
- ^:开始
- (.):捕获百位
- (?!1):十位与百位不同
- (.):捕获十位
- (?!1|2):个位与百位、十位都不同
- .$:结束
示例匹配:123, 456, 789, 135, 246, 357
二、查询特定组六号码
1. 查询包含特定数字的组六
查询包含5的组六号码:
表达式:5.*[^5].*[^5]|[^5].*5.*[^5]|[^5].*[^5].*5
简化表达式:
^(?=.*5)(.)(?!1)(.)(?!1|2).$
说明:
- (?=.*5):正向前瞻,确保包含5
- (.):捕获百位
- (?!1):十位与百位不同
- (.):捕获十位
- (?!1|2):个位与百位、十位都不同
- .$:结束
示例匹配:125, 156, 257, 358, 459, 567(包含5且三个数字不同)
2. 查询特定范围的组六
查询百位是5-9的组六号码:
表达式:^[5-9](.)(?!1).$
说明:
- ^[5-9]:百位是5-9
- (.):捕获十位
- (?!1):个位与十位不同
- .:个位任意(但已确保与十位不同)
- $:结束
注意:此表达式只确保十位和个位不同,未确保与百位不同。如需确保三位都不同,使用:
^[5-9](.)(?!1)(.)(?!1|2).$
示例匹配:567, 589, 678, 789(百位5-9,三位都不同)
豹子号码查询
一、查询所有豹子号码
表达式:^(d)1{2}$
说明:
- ^:开始
- (d):捕获一个数字
- 1{2}:该数字重复2次(共3次)
- $:结束
示例匹配:000, 111, 222, 333, 444, 555, 666, 777, 888, 999
二、查询特定豹子号码
1. 查询特定数字的豹子
查询数字5的豹子:
表达式:^555$
示例匹配:555
2. 查询多个特定豹子
查询5、6、7的豹子:
表达式:^(5{3}|6{3}|7{3})$
示例匹配:555, 666, 777
各类位数一样号码查询
一、百位和十位一样
表达式:`^(.)1.$
说明:
- ^:开始
- (.):捕获百位
- 1:十位与百位一样
- .:个位任意
- $:结束
示例匹配:110, 112, 223, 331, 445(包括组三和豹子)
排除豹子(只匹配组三):
^(.)1(?!1).$
二、百位和个位一样
表达式:^(.).1$
说明:
- ^:开始
- (.):捕获百位
- .:十位任意
- 1:个位与百位一样
- $:结束
示例匹配:101, 121, 212, 313, 454(包括组三和豹子)
排除豹子(只匹配组三):
^(.)(?!1).1$
三、十位和个位一样
表达式:^..(.)1$
说明:
- ^:开始
- ..:百位和十位任意
- (.):捕获十位
- 1:个位与十位一样
- $:结束
示例匹配:011, 122, 233, 344, 455(包括组三和豹子)
排除豹子(只匹配组三):
^[^.]..(.)1$
四、任意两位一样(包括组三和豹子)
表达式:^(.)1.|^(.).1$|^..(.)1$
说明:匹配百十一样、百个一样、十个一样中的任意一种。
示例匹配:
- 百十一样:110, 112, 223
- 百个一样:101, 121, 212
- 十个一样:011, 122, 233
- 豹子:111, 222, 333
五、三位都不同(组六)
推荐表达式:
^(.)(?!1)(.)(?!1|2).$
说明:
- ^:开始
- (.):捕获百位
- (?!1):十位与百位不同(负向前瞻)
- (.):捕获十位
- (?!1|2):个位与百位、十位都不同(负向前瞻)
- .$:结束
示例匹配:123, 456, 789, 135, 246, 357
注意:这是查询组六号码最准确和实用的表达式。
实用查询示例
一、基础查询
|
查询需求 |
正则表达式 |
示例匹配 |
|
百位是7 |
^7 |
715, 789, 700 |
|
个位是5 |
5$ |
715, 825, 005 |
|
百位和个位都是8 |
^8.*8$ |
818, 828, 888 |
|
包含数字5 |
5 |
515, 555, 125 |
|
百位是5-9 |
^[5-9] |
567, 789, 900 |
|
不包含5 |
[^5] |
123, 678, 999 |
二、组合查询
|
查询需求 |
正则表达式 |
说明 |
|
百位是7,个位是5 |
^7.*5$ |
715, 725, 735 |
|
百位和十位一样 |
^(.)1. |
110, 223, 445 |
|
十位和个位一样 |
^..(.)1$ |
011, 122, 233 |
|
百位和个位一样 |
^(.).1$ |
101, 212, 323 |
三、高级查询
|
查询需求 |
正则表达式 |
说明 |
|
全偶数 |
^[02468]{3}$ |
024, 246, 888 |
|
全奇数 |
^[13579]{3}$ |
135, 357, 999 |
|
包含连续数字 |
12|23|34|45|56|67|78|89 |
123, 234, 345 |
|
大中小组合 |
^[7-9][4-6][0-3]$ |
大中小:750, 841, 932 |
P5数据查询
P5数据是5位数字,查询方法与3D/P3类似,但需要扩展到5位。
一、基础查询
|
查询需求 |
正则表达式 |
说明 |
|
前三位是888 |
^888 |
88800, 88811, 88899 |
|
后两位是88 |
88$ |
00088, 12388, 99988 |
|
包含888 |
888 |
88800, 18881, 00888 |
|
第一位是7 |
^7 |
70000, 71234, 79999 |
二、位置一样查询
1. 第一位和第三位一样
表达式:^(.).1..$
示例匹配:10123, 21234, 32345
2. 后两位一样
表达式:^…(.)1$
示例匹配:12344, 45677, 78999
3. 前三位一样(P5豹子)
表达式:^(d)1{2}..$
示例匹配:11123, 22234, 33345
4. 后三位一样
表达式:^..(d)1{2}$
示例匹配:12111, 23222, 34333
三、P5组三/组六查询
P5数据的组三/组六概念与3D/P3不同,一般指:
- 组三:5位中有3位一样
- 组六:5位数字各不一样
查询5位数字各不一样的号码:
表达式:^(.)(?!1)(.)(?!1|2)(.)(?!1|2|3)(.)(?!1|2|3|4).$
说明:确保5位数字都不一样。
常见问题
Q1:为什么我的正则表达式查询不到结果?
可能缘由:
- 正则表达式语法错误
- 数据中的确 没有匹配的号码
- 使用了不兼容的正则语法
解决方法:
- 先使用简单表达式测试(如 ^7 查询百位是7的号码)
- 逐步增加复杂度
- 检查表达式中的特殊字符是否需要转义
Q2:如何查询”不是组三”的号码?
表达式:^(?!(d)1[^1]$|(d)[^2]2$|^[^.]..(d)3$).{3}$
说明:排除所有组三类型,剩下的就是豹子和组六。
Q3:如何查询”不是豹子”的号码?
表达式:^(?!(d)1{2}$).{3}$
说明:排除豹子,剩下的就是组三和组六。
Q4:如何查询”组三或组六”(排除豹子)?
表达式:^(?!(d)1{2}$).{3}$
说明:排除豹子即可。
Q5:正则表达式中的反斜杠需要转义吗?
在软件中输入时:
- 如果使用 1 引用分组,直接输入 1 即可
- 如果使用 \ 表明反斜杠,需要输入 \
示例:
- 查询百位和十位一样:^(.)1.$
- 查询包含反斜杠的号码:\(实际使用中不会用到)
Q6:如何组合多个条件?
使用 |(或运算符):
示例:查询百位是7或8的号码
^7|^8
示例:查询组三或豹子
^(d)1{2}$|^(.)1[^1]$|^(.)[^2]2$|^[^.]..(.)3$
快速参考表
3D/P3常用表达式
|
查询类型 |
正则表达式 |
备注 |
|
所有豹子 |
^(d)1{2}$ |
000-999 |
|
所有组三 |
^(.)1(?!1).$|^(.)(?!2).2$|^[^.]..(.)3$ |
AAB/ABA/BAA |
|
所有组六 |
^(.)(?!1)(.)(?!1|2).$ |
三个不同(推荐) |
|
百位是X |
^X |
X为0-9 |
|
个位是X |
X$ |
X为0-9 |
|
百十一样 |
^(.)1.$ |
包括豹子 |
|
百个一样 |
^(.).1$ |
包括豹子 |
|
十个一样 |
^..(.)1$ |
包括豹子 |
P5常用表达式
|
查询类型 |
正则表达式 |
备注 |
|
前三位一样 |
^(d)1{2}..$ |
P5豹子前三位 |
|
后两位一样 |
^…(.)1$ |
后两位一样 |
|
第一位是X |
^X |
X为0-9 |
|
最后一位是X |
X$ |
X为0-9 |
版权信息
软件名称:3D/P3藏书阁 v3.3 版本:3.3 作者:摸球校尉陈八七
更新日志
- v1.0 (2025-11-24):初始版本,包含组三、组六、豹子查询说明
提示:在软件中输入正则表达式后,点击”查询”按钮即可执行查询。如有疑问,请点击”正则查询协助”按钮查看软件内置协助。






