69926


hoge.txt

[code]

    hoge0500huge4600telssae0700
    hoge0600huge4700telssae0800fdef
    
[/code]

例えばこの様なテキストがあったとして

[code]

    ^hoge0(\d{1,})huge4(\d{1,})telssae0(\d{1,})(.*)?$
    
[/code]

この様な正規表現を用いて特定の数字を取得して、その数値に四則演算を行いテキストとして出力したいです。

イメージとしてはこのような感じです。

[code]

    $x = 2
    （正規表現）
    ^hoge0(\d{1,})huge4(\d{1,})telssae0(\d{1,})(.*)?$
    $AA = $1 / $x
    $AB = $2 / $x
    $AC = $3 / $x
    （テキスト出力）
    hoge0$AAhuge4$ABtelssae0$AC$4
    （出力結果）
    hoge0250huge4300telssae0350
    hoge0300huge4350telssae0400fdeffdef
    
[/code]

どのようにすればよいか教えて頂けると幸いです。

補足

[code]

    $WARU = 2
    $text = @"
    hoge0500huge4600telssae0700
    hoge0600huge4700telssae0800fdef
    "@
    
    $pat = "hoge0(\d{1,})huge4(\d{1,})telssae0(\d{1,})(.*)?"
    $regex = [regex]$pat
    $regex.Matches($text) | foreach {
        $TEST1 = $_.Groups[1].Value
        $TEST2 = $_.Groups[2].Value
        $TEST3 = $_.Groups[3].Value
        $TEST4 = $_.Groups[4].Value
        $TEST1 = $TEST1 / $WARU
        $TEST2 = $TEST2 / $WARU
        $TEST3 = $TEST3 / $WARU
        Write-Output hoge0${TEST1}huge4${TEST2}telssae0${TEST3}${TEST4}
    }
    
[/code]

イメージとしてはこんな感じです。


CC BY-SA 4.0
2020-08-28T00:19:11.163
69923
2020-08-28T01:17:21.243
2020-08-28T00:57:31.893
31483
31483
question
正規表現 powershell
PowerShellでテキストから正規表現を用いて特定の数値を抜き出し四則演算を行いたい


グループの値をシンプルに読み取って置換後の数値でフォーマットする方法です。

[code]

    function My-Replace($s) {
        #正規表現で置換
        $x = 2
        $pattern =  "^hoge0(\d+)huge4(\d+)telssae0(\d+)(.*)$" 
        $m = $s | Select-String -Pattern $pattern
        $groups = $m.Matches.Groups
        $arr = 1..3 | %{ $groups[$_].Value / $x}
        $arr += $groups[4].Value
        "hoge0{0}huge4{1}telssae0{2}{3}" -f $arr
    }
    
    #hoge.txtを読み込み、fuga.txtとして出力
    (Get-Content hoge.txt) -as [string[]] | %{
        My-Replace $_ | Out-File -Append -Encoding default fuga.txt
    }
    
[/code]


CC BY-SA 4.0
2020-08-28T01:01:38.030
69926
2020-08-28T01:17:21.243
2020-08-28T01:17:21.243
9820
9820
69923
answer