C#中段落编号的正则表达式

时间:2016-03-30 07:48:40

标签: c# regex numbers

我正在寻找符合以下任何一项的正则表达式:

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位数。

2 个答案:

答案 0 :(得分:7)

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

单个数字:

\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 。< / p>

答案 1 :(得分:0)

尝试使用此

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