C#中段落编号的Regex



我正在寻找与以下任何一个匹配的Regex表达式:

1.0
2.0
3.1
4.2.1
2.1.1.7
1.3.17.11
12.23.54.18

嵌套/级别可以高于4个级别。。。点之间的数字可能不超过2个数字(最后一个样本)。

我试过这个@"d.d+",但在某些情况下它不起作用。

我也在寻找表达,将只匹配这个:

1.0
12.0
4.0

这里也是-点前不超过2位数字。

像往常一样,考虑一下您想要匹配的结构:

一个位数:

d

任意长度的单个数字:

d+

单个数字,最多限制为2位:

d{1,2}

一个数字,后面跟着一个点,后面跟着另一个数字:

d{1,2}.d{1,2}

一个数字,后面跟着一个点,后面跟着另一个数字

d{1,2}.d{1,2}.d{1,2}

注意到图案了吗?确切地说,你可以使用分组和重复来将该模式匹配到任意长度:

d{1,2}(.d{1,2})+

注意,.在正则表达式中是一个元字符,可以匹配(几乎)任何字符,因此要匹配文字点,需要对其进行转义(如上所示)。

为了只匹配两个嵌套级别,可以用类似的方式将*约束在括号后面:

d{1,2}(.d{1,2}){1}

这意味着它必须与精确匹配一次。然而,在这种情况下,您也可以简化为我们以前看到的正则表达式:

d{1,2}.d{1,2}

但是,如果您想为任意n创建与n嵌套级别匹配的正则表达式,那么在末尾添加精确的重复次数可能会有所帮助。

尝试使用此

(d{1,2}[.])+d{1,2}

最新更新