0
以下のコードとそのうまくいっさいの通り、正規表現の文字列を抽出しようとしました。下のスクリプトに従って、テキストの中で "45 \ 345 \ 54"という文字列を\ 345 \として抽出しています。Powershell Regex extract concat text
$input_path = "E:\DOC\all.txt"
$output_file = "E:\DOC\all-pts.txt"
$regex1 = ‘[ \b\t\n\r]+\\+[A-Z0-9_-]+\\$’
select-string -Path $input_path -Pattern $regex1 -AllMatches | % {
$_.Matches } | % { $_.Value } > $output_file
しかし、私は行うことができないのですたとえば以下のとおりにif文を使用して正規表現の結果、両方の1つの以上の正規表現文字列と連結を抽出したいです。私がここで何をしているのか分かりません。私はPowerShellを初めて使用しました。
INPUTファイル(all.txt)
temp1.txt:テキスト\ ABC \がここ
ある TEMP2:ファイル\ XYZ \ 123 \
temp2.txt \見つからない見つかりません .TXT:NUM \ 999 \はい\ FIRST \
出力ファイル(すべて-pts.txt)
temp1.txt \ XYZ \
123 \ temp1.txt
\ temp2.txt \ ABC \
temp2.txt FIRST \
$input_path = "E:\DOC\all.txt"
$output_file = "E:\DOC\all-pts.txt"
(Get-Content "$input_path") | ForEach-Object
{if($_ -like ‘[ \b\t\n\r]+\\+[A-Z0-9_-]+\\$’)
{
$regex1 = ‘[ \b\t\n\r]+\\+[A-Z0-9_-]+\\$’
$regex2 = ‘[ A-Z0-9_-]+\.txt$’
select-string -Path $input_path -Pattern $regex1 -AllMatches | %
{ $_.Matches } | % { $_.Value } > $output_file
select-string -Path $input_path -Pattern $regex2 -AllMatches | %
{ $_.Matches } | % { $_.Value } > $output_file
}
}
'ワイルドカードのためのものである-like'(例えば ''/'' *?)。大文字と小文字を区別する正規表現 – TheIncorrigible1
のために '-match'または' -cmatch'を使いたい問題は、出力ファイルごとに同じ行に2つの正規表現の結果を連結できないことです。 – Arjun
正規表現を組み合わせてみませんか? '' [\ b \ t \ n \ r] + \\ + [A-Z0-9 _-] + \\ $ | [A-Z0-9 _-] + \。txt $ '' –