LoginSignup
0
0

More than 3 years have passed since last update.

正規表現でインデントのスペースの個数を置換する

Posted at

https://stackoverflow.com/a/30304686 より。

4スペースでインデントされているファイルを正規表現で2スペースに置換したい、あるいはその逆の場合は\Gを使えばできる。
\Gは.NET, PCRE (C, PHP, R…), Java, Perl, Rubyでサポートされている。

Rubyを使うなら:

ruby -pe '$_.gsub!(/(^|\G) {4}/, " "*2)' < {ファイル名}

Vim内でやるなら:

%!ruby -pe '$_.gsub\!(/(^|\G) {4}/, " "*2)'

解説

\G
1. 文字列の先頭
2. 前のマッチの直後の位置
のいずれかにマッチする。

他にも例えば

Tarzan A:33 B:32 C:36 Jane A:35 B:33 C:31

という文字列からJaneのスコアをパースして取り出したいというような場合にも使える:

irb(main):002:0> "Tarzan A:33 B:32 C:36 Jane A:35 B:33 C:31".scan(/(?:Jane|\G) \w+:(\d+)/)
=> [["35"], ["33"], ["31"]]

下記ページで解説されている。
http://www.rexegg.com/regex-anchors.html#G

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0