読者です 読者をやめる 読者になる 読者になる

正規表現_特定の範囲を選択または取得 & 最短マッチ

特定の範囲を「選択」

以下のデータにおいて、 ≪B≫「XXXX」 というデータを選択したい時

 ≪A≫「りんご」≪B≫「猫」≪C≫「電車」

 ≪A≫「みかん」≪B≫「dog」≪C≫「car」

 ≪A≫「ぶどう」≪B≫「サル」≪C≫「自転車」

 

≪B≫.*?」

《B》~」(一つ目の『」』)までという意味。

「*」の後ろに「?」をつけると、最短マッチとなる。

つまり、《B》~『」 』が初めて出現する範囲まで。

 f:id:koshinRan:20161119020740j:plain

 

特定の範囲を「取得」

 ≪B≫「XXXX」 というデータを取得したい時。

 ≪B≫「XXXX」だけを残すという手法で取得。つまり《A》《C》を置換する。

  1. (.*)(?=≪B≫)
  2. ↑で選択した個所を『(空文字)』で置換
  3. [?<=(≪B≫.*?」)]≪.*
  4. ↑で選択した個所を『」』で置換

以上で取得できる。

1

f:id:koshinRan:20161119021238j:plain

2

f:id:koshinRan:20161119021506j:plain

3

f:id:koshinRan:20161119021601j:plain

 

自分で書いていてよく分からないところ多々あるが、以上。