如何使用 PowerShell 匹配运算符
How to use the PowerShell match operator
版本:PowerShell 2.0
我有以下内容:
$pattern = '^.\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d.pdf$'
$filename = '123456_12345678_12345678901234.pdf'
$filename -match $pattern
我希望 ^ 和 $ 字符开始和结束字符串。因为我使用的是通配符“.”一开始,我真的只关心 $ 终止符。这些字符在 PowerShell 中似乎无法正常工作,因为上面的代码 returns FALSE.
哪种模式 return $goodname 为真,$badname 为假。姓名第一段的位数未知。
$goodname = '123456_12345678_12345678901234.pdf'
$badname = '123456_12345678_12345678901234.pdf.hold'
它 returns 错误,因为 filename
与 pattern
不匹配。
更好的正则表达式是:
$pattern = '^\d+_\d{8}_\d{14}\.pdf$'
$filename = '123456_12345678_12345678901234.pdf'
$filename -match '\d{6}_\d{8}_\d{14}\.pdf.*'
说明
^
字符串开头
\d+
至少匹配一位数字(如你所说,这里的位数未知)
_
匹配下划线
\d{8}
匹配8位数字
_
匹配下划线
\d{14}
匹配14位数字
\.
匹配一个点 .
pdf
匹配 "pdf"
$
如果您现在不在字符串末尾,则不匹配。
版本:PowerShell 2.0
我有以下内容:
$pattern = '^.\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d.pdf$'
$filename = '123456_12345678_12345678901234.pdf'
$filename -match $pattern
我希望 ^ 和 $ 字符开始和结束字符串。因为我使用的是通配符“.”一开始,我真的只关心 $ 终止符。这些字符在 PowerShell 中似乎无法正常工作,因为上面的代码 returns FALSE.
哪种模式 return $goodname 为真,$badname 为假。姓名第一段的位数未知。
$goodname = '123456_12345678_12345678901234.pdf'
$badname = '123456_12345678_12345678901234.pdf.hold'
它 returns 错误,因为 filename
与 pattern
不匹配。
更好的正则表达式是:
$pattern = '^\d+_\d{8}_\d{14}\.pdf$'
$filename = '123456_12345678_12345678901234.pdf'
$filename -match '\d{6}_\d{8}_\d{14}\.pdf.*'
说明
^
字符串开头\d+
至少匹配一位数字(如你所说,这里的位数未知)_
匹配下划线\d{8}
匹配8位数字_
匹配下划线\d{14}
匹配14位数字\.
匹配一个点.
pdf
匹配 "pdf"$
如果您现在不在字符串末尾,则不匹配。