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

时间:2018-02-15 07:08:21

标签: regex powershell text special-characters lowercase

我有很多.txt文件,我需要在字符“%”之后小写字符串/单词的每个实例,而不是在第一个单词之后的下面的单词。我试图在PowerShell中做到这一点。

我有这个:

%WORD WORD2 WORD3 %WORD4

我需要这个:

%word WORD2 WORD3 %word4

下面的代码使文件中的所有内容都小写,我只需要在字符“%”后的第一个单词的所有实例中执行此操作。

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

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

$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
}

注意: 如果您不需要为 %;之间的每个单词执行此操作,那么正则表达式将是:

(?<=%)(\w+)