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)零次或更多次?那么这会匹配我指定的第一组中的所有项目吗?我现在已经更正了。它现在使用+
而不是*
。