我正在嘗試制作用于搜索所有檔案和 txt 檔案以查找密碼模式的 powershell 腳本。實際上我的代碼作業正常。我的正則運算式是捕獲密碼,但它帶來了所有行。
正則運算式模式
""" . (?=.{8,20})(?=. [az])(?=. [AZ])(?=. [0-9])(?=. [!^# $ %&{()=}? -|¨@.,:;,]).* """
樣品樣品 2
我的正則運算式帶來了所有 Line。如何解決此錯誤。
PS 代碼
$Path = "c:\users\XXXXXXX"
$output_file = ‘C:\Users\XXXXXXXX\Desktop\Result.txt’
$ALLWORDS =Get-ChildItem $Path -Recurse -ErrorAction SilentlyContinue
foreach ($WORDS in $ALLWORDS) { #
$Word = New-Object -ComObject Word.Application
$Word.Visible = $false
$regex = ‘\b.*(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!^# $%&{()=}?*\-|¨@.,:;,]).*\b’
$Doc = $Word.Documents.Open($WORDS.FullName, $false, $true)
$paras = $doc.Paragraphs
echo $paras.count
foreach($para in $paras){
if( $para.range.text -match $regex) {
$1=$matches.Values,$Words.Name | Out-File $output_file -Append
Write-Host $matches.Values, $words.Name
}
}
$Doc.Close()
$Word.Quit()
$Word = $null
}
uj5u.com熱心網友回復:
您可以使用
(?<!\S)(?=[^a-z\s]*[a-z])(?=[^A-Z\s]*[A-Z])(?=[^0-9\s]*[0-9])(?=\S*[!^# $%&{()=}?*|¨@.,:;,-])\S{8,20}(?!\S)
請參閱正則運算式演示。請注意,您需要使用-cmatch運算子而不是-matchPowerShell,否則它將不區分大小寫。
詳情:
(?<!\S)- 左邊不允許有空格(?=[^a-z\s]*[a-z])- 在除空格和小寫 ASCII 字母之外的任何零個或多個字符之后,必須有一個小寫 ASCII 字母(?=[^A-Z\s]*[A-Z])- 在除空格和大寫 ASCII 字母之外的任何零個或多個字符之后,必須有一個大寫 ASCII 字母(?=[^0-9\s]*[0-9])- 在除空格和 ASCII 數字之外的任何零個或多個字符之后,必須有一個 ASCII 數字(?=\S*[!^# $%&{()=}?*|¨@.,:;,-])- 在任何零個或多個非空格之后,必須有一個符號來自[!^# $%&{()=}?*|¨@.,:;,-]集合(替換為\S*以[^\s!^# $%&{()=}?*|¨@.,:;,-]*獲得更好的性能,我只是想在這里保持模式更短)\S{8,20}- 八到二十個非空白字符(?!\S)- 右側空白邊界。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490714.html
下一篇:Powershell腳本需要幫助
