您当前的位置:首页 > 互联网教程

如何用正则表达式求出1~100之间的所有整数

发布时间:2025-05-20 19:37:12    发布人:远客网络

如何用正则表达式求出1~100之间的所有整数

一、如何用正则表达式求出1~100之间的所有整数

1、我们先建立DFA看看,1是初始状态。

2、如果当前状态是1,读入符号是1,则停在1状态,是0则进入2状态;

3、如果当前状态是2,读入符号是0,则停在2状态,是1则进入3状态;

4、如果当前状态是3,读入符号必然是0,否则构成011子串。此时回到2状态。

5、现在我们来写正则表达式,对1状态可写成(1)*0(...)|(1)*

6、对23构成了一个循环,写成((0)*10)*

二、正则表达式 匹配1-300所有数字,并求讲解

\b300\b|\b[12]?\d\d\b|\b[1-9]\b

所有的\b都是为了避免匹配一个大的数字的其中一部分。

\b字符开头+一些东西+\b字符结束,

300#百位是3,十位、个位只能是0

[12]?#百位如果是1、2【也可以没有】

\d\d#个位、十位两个数字可以是任意值

[1-9]#只有一位数字时,因不能是0,所以可以1~9

如果你数据里面没有单独两个0的情况,就不用改表达式

三、求一个大于0 小于100 的浮点数正则表达式

对于大于0且小于100的浮点数,我们可以使用正则表达式进行匹配。一个简单的正则表达式是:^\d{1,2}(\.\d+)?$。这个表达式的含义是:一位或两位数字,后面可以跟随一个小数点和至少一个数字,也可以没有小数部分。比如0,1,6,12,44,99,0.000,0.123,5.000,99.999999等都可以被匹配到。

然而,0和0.000等会被匹配到,因为它们与0.00000000在形式上相似,而0.000000002则难以用一个正则表达式排除。为了解决这个问题,我们可以先用正则表达式确认数值在[0,100)的范围内,然后进一步判断是否等于0,最终得到(0,100)的范围。

另一种更严格的正则表达式是:^0\.0*[1-9]\d*$|^[1-9](\.\d+)?$|^[1-9]\d(\.\d+)?$。它可以匹配以下三种格式的数:0.xxxxxx(xxxxx中存在至少一个非0的数字)或者x.yyyy(x为非0的数字,y为数字,.yyy可有可无)或者xy.yyy(x为非0的数字,y为数字,.yyy可有可无)。这样,00.10,01.234,06等都会被认为是不匹配的。

通过这种方式,我们可以更精确地匹配大于0且小于100的浮点数,同时避免了0和0.000等难以排除的情况。