正規表現のネストされた「+」/「-」先読み/後読みに問題があります。
'*'
で文字列を変更したいとしましょう。次の文字をエスケープする'%'
としましょう。'\'
(正規表現をSQLのようなコマンドに変えます^^)。
だから文字列
'*test*'
に変更する必要があります'%test%'
。'\\*test\\*'
->'\\%test\\%'
、しかし'\*test\*'
そして'\\\*test\\\*'
変わらないはずです。
私は試した:
(?<!\\)(?=\\\\)*\* but this doesn't work
(?<!\\)((?=\\\\)*\*) ...
(?<!\\(?=\\\\)*)\* ...
(?=(?<!\\)(?=\\\\)*)\* ...
上記の例の「*」に一致する正しい正規表現は何ですか?
このような視覚的な構造を持つ正規表現の違いと、これらが本質的に間違っている場合の(?<!\\(?=\\\\)*)\*
違いは何ですか?(?=(?<!\\)(?=\\\\)*)\*