2015年2月16日月曜日

【MacOSX向け】正規表現による一括抽出・置換(CotEditor編)

HTMLファイルなどから必要な情報だけを抽出して、置換したいってことありませんか。
そういうときには正規表現による抽出や置換が簡単です。

ダウンロード


筆者は文字コード、改行コード変換、正規表現による置換にとても重宝しています。
フォルダ全対象になってくると、TextWranglerを利用した一括置換をしてるんですけどね。

利用例:dtタグデータをXML変換

<dt>2015/01/22</dt>
<dd><a href="◯◯">タイトル</a></dd>

のHTMLデータを下記のXMLデータに変換したい

<item>
  <date>2015/01/22</date>
  <title>タイトル</title>
  <url>◯◯</url>
</item>

※<date>, <title>, <url>の前は、タブを1ついれることとする



改行コードを「LF」に変換しておく

CotEditorの上部メニューで可能です。
改行コードは、LF, LF+CR, CRの3種類あり、LF=¥n, CR=¥r で表記します。
WindowsではLF+CRが利用されており、LFにするとWindowsのメモ帳で改行されずに表示されてしまう可能性はあります。あとで変換もできますので置換を簡略化するためにもLFに統一していると過程します。

1. dt→date、dd→title

まず最初に思いつくのが、

  • <dt> → <date>, </dt> → </date>
  • <dd> → <title>, </dd> → </title>

まぁこれは普通の置換で出来ます。
結果として

<date>2015/01/22</date>
<title><a href="◯◯">タイトル</a></title>

2. <date>の前に<item>を置き、<date>の前のタブを置く

※置換時に「正規表現」のオプションにチェックしてください。
(¥nの改行コードを扱うため)

これは、
<date> → <item>¥n¥t<date>
とすればよい。¥n(バックスペース+n)は、改行コード

詳しくは下記に詳細なブログがいくつかあるので参考にしてみてください

これで、
<item>
  <date>2015/01/22</date>
<title><a href="◯◯">タイトル</a></title>

※先頭は1つタブが入っている

に置換されます。

3. <title>の前のタブを置く


<title> → ¥t<title>

で置換する
<item>
  <date>2015/01/22</date>
  <title><a href="◯◯">タイトル</a></title>

となるはずです。

4. </title>の次の行に</item>を置く

※置換時に「正規表現」のオプションにチェックしてください。

</title> → </title>¥n</item>

で置換する。

<item>
  <date>2015/01/22</date>
  <title><a href="◯◯">タイトル</a></title>
</item>

となります。さて次が正規表現による抽出になります。

5. ◯◯を抽出し、<url>◯◯</url>を<title>の次の項目に追加する

※置換時に「正規表現」のオプションにチェックしてください。

<title><a href="(.*)">(.*)</a></title> → <title>¥2</title>¥n¥t<url>¥1</url>

として置換してみてください。
このとき一括検索することで、どのように抽出されているか分かります。


関連情報


2015年2月16日 @kimipooh

0 件のコメント: