今天写正则表达式发现
$Matches = [System.Text.RegularExpressions.Regex]::Matches("客户人数:10","客户人数.*(\d{1,3})")
仅能匹配 0(目标是获取10) :
查了下百度发现默认是贪婪模式,也就是尽可能获取更多的字符,这边 \d{1,3} 是获取数字1到3位的意思,那么前面的 .* 是可以把1也占为己有了
可见贪婪模式不是一般的贪,为了避免他贪污我们后面的数字,我们需要用 .*? 防止他贪了我们后面的 \d{1,3}:
*:任意多个
+:一个到多个
?:0或一个
举一反三:
那么如果我们原文本是 "客户人数 : abcswqf Hello 你好 10" 也是没问题的, .*?也帮你匹配了 " : abcswqf Hello 你好 " 这一段: