我正在寻找符合以下任何一项的正则表达式:
1.0
2.0
3.1
4.2.1
2.1.1.7
1.3.17.11
12.23.54.18
Run Code Online (Sandbox Code Playgroud)
嵌套/水平可能高于4级...点之间的数字可能不超过2位(最后一个样本).
我试过这个,@"\d.\d+"但在某些情况下它不起作用.
我也在寻找只与此匹配的表达式:
1.0
12.0
4.0
Run Code Online (Sandbox Code Playgroud)
这里也是 - 点之前不超过2位数.
像往常一样,考虑一下你想要匹配的结构:
单个数字:
\d
Run Code Online (Sandbox Code Playgroud)
单个数量的任意长度:
\d+
Run Code Online (Sandbox Code Playgroud)
一个数字,最多约2位数:
\d{1,2}
Run Code Online (Sandbox Code Playgroud)
一个数字,后跟一个点,后跟另一个数字:
\d{1,2}\.\d{1,2}
Run Code Online (Sandbox Code Playgroud)
一个数字,后跟一个点,后跟另一个数字,然后是另一个点,接着是另一个数字:
\d{1,2}\.\d{1,2}\.\d{1,2}
Run Code Online (Sandbox Code Playgroud)
注意一个模式?确切地说,您可以使用分组和重复将该模式匹配到任意长度:
\d{1,2}(\.\d{1,2})+
Run Code Online (Sandbox Code Playgroud)
请注意,这.是正则表达式中的元字符,匹配(几乎)任何字符,因此要匹配文字点,您需要将其转义(如上所示).
要匹配两个级别的嵌套,您可以*以类似的方式约束括号后面:
\d{1,2}(\.\d{1,2}){1}
Run Code Online (Sandbox Code Playgroud)
这意味着它必须恰好匹配一次.但是,在这种情况下,您还可以简化为我们之前看到的正则表达式:
\d{1,2}\.\d{1,2}
Run Code Online (Sandbox Code Playgroud)
但是,如果要为任意n创建与n级嵌套匹配的正则表达式,那么在最后放置确切的重复次数会很有帮助.