特定のカラムの値を"任意の値"に変更する

「置換」の正規表現サンプル

やりたいこと

特定のカラムの値を"任意の値"に変更する

 

正規表現

「置換前」の指定:(".*?",)(".*?",)(".*?",)(".*?",)(".*?")
「置換後」の指定:\1\2"りんご",\4\5

赤文字:メタ文字
※上記の正規表現:csvファイル内の1行のカラムを5カラムとする場合
         特定のカラムが3カラム目の場合
         "任意の値"が"りんご"の場合

 

置換結果

置換前

"梨","柿","みかん","ぶどう","いちご"

置換後

"梨","柿","りんご","ぶどう","いちご"

赤文字:置換された文字列

 

解説

置換前:(".*?",)(".*?",)(".*?",)(".*?",)(".*?")
■(".*?",)
 .*?は最左の最短マッチを表します。
 ()でくくることにより、その中の文字列を一つのグループとしています。

 一つ目の(".*?",)は一つ目に「"~",」となる部分を指し、二つ目から四つ目は同様に
 二つ目から四つ目の「"~",」となる部分を指します。

 ※?を含まない「(".*",)」とした場合、上記の例でいうと「"梨",」ではなく、
  「"梨","柿","みかん","ぶどう",」にマッチしてしまいます。

■(".*?")
 .*?は最左の最短マッチを表します。
 ()でくくることにより、その中の文字列を一つのグループとしています。

 4つの(".*?",)と組み合わせていることにより、4つ目の("~",)以降の("~")にマッチ
 します。

 ※4つの(".*?",)と組み合わせない場合、「"梨"」「"柿"」「"みかん"」「"ぶどう"」
  「"いちご"」にマッチしてしまいます。

置換後:\1\2"りんご",\4\5
 \1:置換前の条件の1つ目のグループ(".*?",)に該当します。
 \2:置換前の条件の2つ目のグループ(".*?",)に該当します。
 \4:置換前の条件の4つ目のグループ(".*?",)に該当します。
 \5:置換前の条件の5つ目のグループ(".*?")に該当します。

 この場合は、2つ目のグループである「"柿",」と4つ目のグループである「"ぶどう",」
 の間に「"りんご",」を設定しているので、置換後は「"みかん",」の部分が「"りんご",」
 になります。(\3とすれば、置換後も「"みかん",」となります。)