

AutoHotKeyにて、「無変換」キーを押下したときに「任意の数字10桁より後ろの文字列を削除する」アクションを割り当てるため、以下のスクリプトを実行したところエラーメッセージが出力されました。

**現状のスクリプト:**

[code]

    <vk1D::
        StrMsg_in := "1234567890hogehoge"
        StrMsg_out := RegExReplace(StrMsg_in, (?<= [0-9]{10}).*, "")
        Clipboard := StrMsg_out
        Send, ^v
        return
    
[/code]

**エラーメッセージ:**

[code]

    Error: Unexpected "{"
    
    ---中略---
    
    --->StrMsg_out := RegExReplace(StrMsg_in, (?<= [0-9]{10}).*, "")
    
    ---中略---
    
[/code]

また、`[0-9]` の箇所を `\d` とした場合、以下のエラーメッセージが出力されました。

[code]

    Line Text: \d
    Error The leftmost character above is illegal in an expression.
    
    The program will exit
    
[/code]

こちら、解決方法または解決手順の知見ある方がいらっしゃればご助言いただきたいです。


CC BY-SA 4.0
2022-01-17T10:39:57.343
85759
2022-01-17T11:18:01.597
2022-01-17T11:18:01.597
3060
50946
question
正規表現 autohotkey
AutoHotKeyの正規表現でエラーが出る


`RegExReplace` の中でパターン (正規表現) 部分をダブルクォート `" "` で括ってみて下さい。

[code]

    StrMsg_out := RegExReplace(StrMsg_in, "(?<= [0-9]{10}).*", "")
    
[/code]

**参考: 公式ドキュメントで正規表現を使った例**  
<https://www.autohotkey.com/docs/commands/RegExReplace.htm#Examples>

>
[code]

>     MsgBox % RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")
>  
[/code]


CC BY-SA 4.0
2022-01-17T11:16:57.103
85760
2022-01-17T11:16:57.103
3060
85759
answer