使用正则表达式检查字符串中单个字符的特定出现次数

时间:2018-02-16 09:47:13

标签: regex powershell

我试图为我的powershell代码创建一个正则表达式模式。我之前从未使用过正则表达式,所以我是一个总的菜鸟。

正则表达式应该检查字符串中是否有两个点。

应该工作的例子:

3.1.1
5.10.12
10.1.15

不应该起作用的例子:

3
3.1
5.10.12.1

字符串中必须有两个点,数字位数并不重要。

我尝试过这样的事情,但它并没有真正发挥作用,我认为它远非正确的解决方案......

([\d]*.[\d]*.[\d])

2 个答案:

答案 0 :(得分:2)

在你当前的正则表达式中,我认为你可以逃脱点\.,否则点会匹配任何角色。

您可以为字符串的开头^和结束$添加锚点,并将正则表达式更新为^\d*\.\d*\.\d*$ 这也符合..4..

或者,如果您想匹配一个或多个数字,我认为您可以使用^\d+(?:\.\d+){2}$

那就匹配

^       # From the beginning of the string
\d+     # Match one or more digits
(?:     # Non capturing group
  \.\d+ # Match a dot and one or more ditits
){2}    # Close non capturing group and repeat 2 times
$       # The end of the string

答案 1 :(得分:1)

使用前瞻:

^\d(?=(?:[^.]*\.[^.]*){2}$)[\d.]*$

<小时/> 细分,这说:

^                       # start of the line
\d                      # at least one digit
(?=                     # start of lookahead
    (?:[^.]*\.[^.]*){2} # not a dot, a dot, not a dot - twice
$                       # anchor it to the end of the string
)
[\d.]*                  # only digits and dots, 0+ times
$                       # the end of the string

<小时/> 请参阅a demo on regex101.com