PowerShell - txt 文件中特殊字符后的第一个单词小写

PowerShell - lowercase first word after special character in txt files

我有很多 .txt 文件,我需要在字符“%”之后将 string/word 的每个实例小写,但第一个单词之后的以下单词则不需要。我正在尝试在 PowerShell 中执行此操作。

我有这个:

%WORD WORD2 WORD3 %WORD4

我需要这个:

%word WORD2 WORD3 %word4

下面的代码使文件中的所有内容都变成小写,我需要它只在字符“%”之后的第一个单词的所有实例中这样做。

$path=".\*.txt"
Get-ChildItem $path -Recurse | foreach{    
    (Get-Content $_.FullName).ToLower() | Out-File $_.FullName
}

对不起,安藤,我忘了在评论中回答你的问题。 这是正则表达式的样子: (?s)(?<=%)(\w+).*(?=;)

这里是第一个单词小写的代码:

$path=".\*.txt"
$callback = {  param($match) $match.Groups[1].Value.ToLower() }
$rex = [regex]'(?s)(?<=%)(\w+).*(?=;)'

Get-ChildItem $path -Recurse | ForEach-Object {
        $rex.Replace((Get-Content $_ -raw), $callback) | Out-File $_.FullName
}

注: 如果您不需要为 between %; 之间的每个单词都这样做,那么正则表达式将是:

(?<=%)(\w+)