cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

バックスラッシュでエスケープされていないスペースを表す正規表現

いい加減どこに書いたのか忘れてその度に考えて作り直すのが面倒くさいのでメモ。

let list = split(str, '\%(\%(\%([^\\]\|^\)\%(\\\\\)*\)\@<=\\\)\@<! ')

後ろから読んでいった方が理解しやすい

'\\\@<! ' "前にバックスラッシュのない空白
'\%(\%([^\\]\|^\)\%(\\\\\)*\)\@<=\\' "『「バックスラッシュでない文字または行頭」の後の偶数個のバックスラッシュ』の後のバックスラッシュ
  "つまり、まだ完結していない、後ろに文字を取る、意味を持っている、単独のバックスラッシュ

合わせて前に【『「バックスラッシュでない文字または行頭」の後の偶数個のバックスラッシュ』の後のバックスラッシュ】のない空白。