在验证用户的条目时,模式识别是必要并且常见的任务。例如判断用户的输入的字符串是否是一个合法的网络IP地址,或者电子邮箱。有用并且高效的模式匹配需要一些能代表确切数字和字符的通配符。
许多年前,人们就发明了简单的模式匹配,一直沿用至今。
#列出当前目录中的文本文件 Dir *.txt # 列出系统目录中以‘n’或‘w’打头的文件 dir $env:windir\[nw]*.* # 列出文件后缀名以‘t’打头,并且后缀名只有三个字符的文件 Dir *.t?? # 列出文件中包含一个’e’到’z’之间任意字符的文件 dir *[e-z].*
通配符 | 描述 | 示例 |
* | 任意个任意字符,(包含零个字符) | Dir *.txt |
? | 一个任意字符 | Dir *.??t |
[xyz] | 一个包含在指定枚举集合中的字符 | Dir [abc]*.* |
[x-z] | 一个包含在指定区间集合中的字符 | Dir *[p-z].* |
上面表格中的通配符主要被使用在文件系统中,但是在字符串操作符-like和-notlike 中也可以。例如通过下面的方式可以简单验证IP地址。
$ip = Read-Host "IP address" If ($ip -like "*.*.*.*") { "valid" } Else { "invalid" }
也可以简单验证电子邮件地址。
$email = ".@." $email -like "*.*@*.*"
然而上面的例子也仅能验证一些低级错误,还不是很确切。例如a.b.c.d不是一个有效的IP地址,但是上面的模式匹配却能通过验证。
引用链接:Powershell 简单模式识别
本文链接: https://www.pstips.net/simple-pattern-recognition.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
# 列出系统目录中以‘n’和‘w’打头的文件
dir $env:windir\[nw]*.*
非常感谢 Victor.Woo 兄的纠正,已更新!