Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中段落编号的正则表达式#_C#_Regex_Numbers - Fatal编程技术网

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

C# C中段落编号的正则表达式#,c#,regex,numbers,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位。像往常一样,考虑要匹配的内容的结构: 一位数: \d 任意长度的单个数字: \d+ \d{1,2}(\.\d{1,2})+ 单个数字,最多

我正在寻找将匹配以下任一项的正则表达式:

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+
\d{1,2}(\.\d{1,2})+
单个数字,最多限制为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}\.\d{1,2}
注意到一个模式吗?确切地说,您可以使用分组和重复将该模式匹配到任意长度:

\d+
\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}

试试
@“(?m)^\d+(?:\。\d+”
为什么字符类和量词过多?
(\d{1,2}[.])*\d{1,2}
不够简单吗?朱普,我想你是对的。在我的回答中更改了这一点。看看这个:\d{1,2}(\.\d{1,2})*并不意味着它将匹配\d(1,2)零次或更多次?那么这会匹配我指定的第一组中的所有项目吗?我现在已经更正了。它现在使用
+
而不是
*