3D/P3/P5 正则表达式查询详细说明文档

内容分享4小时前发布
0 0 0

3D/P3/P5 正则表达式查询详细说明文档

目录

  1. 概述
  2. 基础知识
  3. 组三号码查询
  4. 组六号码查询
  5. 豹子号码查询
  6. 各类位数一样号码查询
  7. 实用查询示例
  8. P5数据查询
  9. 常见问题

概述

本软件支持使用正则表达式进行高级号码查询。当输入包含特殊字符时,系统会自动识别为正则表达式查询模式。

识别规则:如果输入包含以下任一字符,系统将识别为正则表达式:

  • * . ^ $ [ ] ( ) + ? | { }

数据类型

  • 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:为什么我的正则表达式查询不到结果?

可能缘由

  1. 正则表达式语法错误
  2. 数据中的确 没有匹配的号码
  3. 使用了不兼容的正则语法

解决方法

  1. 先使用简单表达式测试(如 ^7 查询百位是7的号码)
  2. 逐步增加复杂度
  3. 检查表达式中的特殊字符是否需要转义

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):初始版本,包含组三、组六、豹子查询说明

提示:在软件中输入正则表达式后,点击”查询”按钮即可执行查询。如有疑问,请点击”正则查询协助”按钮查看软件内置协助。

3D/P3/P5 正则表达式查询详细说明文档

© 版权声明

相关文章

暂无评论

none
暂无评论...