SDL Trados Studio 2014の検索置換で正規表現が使用できるか試してみる【テキストエディタのMeryと比較】翻訳者さんのお役にたてればと思いつつ
- 2015.02.26
- Trados
- Trados 2014, 使い方, 正規表現, 翻訳
お世話になります。個人出版支援のFrentopiaです。
前回の記事でSDL Trados Studio 2014の検索置換でワイルドカードがどのくらい使えるのかを試してみました。
今回はその続きで、正規表現がどのくらい使用できるのか、置換がうまくいくのかいかないのか。その辺りを試してみた経緯をお伝えしたいと思います。
基本的な正規表現(テキストエディタMery使用)の検索
ではまず、基本的な正規表現について触れていきたいと思います。
エディタはフリーのテキストエディタMeryを使用しております。
Meryの検索ウィンドウに用意されている正規表現はこんな感じです。
正規表現について、だいたい基本的なものをご紹介すると、
¥s:空白
¥d:半角数字
¥n:改行
.:任意の1文字
?:0または1回
*:0回以上
{n}:n回
^:行頭
$:行末
():グループ化
[]:カッコ内の任意の1文字
[^]:カッコ内の文字以外の任意の1文字
[a-z]:小文字アルファベット
[A-Z]:大文字アルファベット
[ぁ-ん]:全角ひらがな
[ァ-ヶ]:全角カタカナ
[亜-黑]:漢字
といったところでしょうか。
他にもいろいろありますが、このくらいを知っているだけでも結構複雑な検索が実行できたりします。
検索に使う文書は前回の記事でも使用しましたが、こんな感じのものを用意してみました。
まずはCtl+Fで検索ウィンドウを出し、「正規表現を使用する」にチェックを入れます。
そして簡単な正規表現を使用してみます。
「^」(行頭)と「.」(任意の1文字)を入力して「行頭にある任意の1文字」という意味の検索を実行します。
ヒットした部分の色が変わります。うまく検索できているようです。
続いて「¥s」(空白)の検索です。
こちらも検索できました。なおスペースに関しては、ワイルドカード同様全角半角は区別されません。
全角のスペースを検索したいときはこんな感じになります。
[ ](全角スペース)
別に正規表現じゃなくてもいけますけど。
次は複数の組み合わせを試してみます。
¥d{3}.$
・「¥d」(半角数字)+{3}(3回)→3桁の数字の意味
・「.」(任意の1文字)+$(行末)→行末の1文字
この2つを組み合わせて検索した結果がこちらです。
うまくいっているみたいですね。
ではもうちょっと突っ込んでみます。
[A-Z]{4}¥d{3}[a-zA-Z]¥s
一見「うわっ」となるかも知れませんが、1つずつ冷静に見ていけばそんなに難しくはないと思います。
・[A-Z]{4}→大文字アルファベット4文字
・¥d{3}→半角数字3文字
・[a-zA-Z]→大文字または小文字のアルファベット
・¥s→空白
細かく見ていくとこうなります。
で、検索結果がこちらです。
製品の型番などを検索するときに使えそうなパターンですね。
ちなみに「AOSG550Y 」の隣にある「AOSC550Y」は、アルファベットの次に「¥s」(空白)がないためにヒットしていません。
では、次は[^]([]内を否定)を試してみましょう。
[^亜-黑]
「[亜-黑]」(漢字)の頭に「^」(否定)をつけて、漢字以外の文字という意味のパターンです。
うまく検索できてますね。
「〇〇以外の××」を検索したいときは[^]を使用します。
正規表現を使った置換(テキストエディタMery使用)
さて、今度は正規表現を使って置換をしてみます。検索だけですとあまり正規表現の恩恵を得られてるとは言いがたいので、やっぱり置換ができて欲しいわけです。
まずCtl+RでMeryの置換ウィンドウを出します。
そして下記を入力します。
・検索文字列:([亜-黑]{2})ダッシュ(¥s¥d{2})
・置換文字列:$1スラッシュ$2
まずは検索文字列から見ていきましょう。
[亜-黑]{2}(漢字2文字)+ 「ダッシュ」 + ¥s(スペース)+ ¥d{2}(数字2桁)
「Wordで各ページのヘッダーに見出しタイトル(段落)を自動的に表示する方法2つ【クイックパーツ/相互参照】」
そしてお気づきかと思いますが、[亜-黑]{2}と¥s¥d{2}をそれぞれ()で囲んでいます。
これは前回の記事のワイルドカード同様、()で囲むとその部分をグループ化することが可能になります。
つまりこの検索文字列の中には([亜-黑]{2})と(¥s¥d{2})という2つの正規表現グループが存在しているということになるわけです。
続いて置換文字列を見ていきます。
$1(1つ目のグループを参照)+ 「スラッシュ」 + $2(2つ目のグループを参照)
となっています。「$n」を使用すると、n番目の正規表現グループを参照できるわけです。つまり「$1」は1番目の正規表現グループ([亜-黑]{2})を参照し、「$2」は2番目の正規表現グループ(¥s¥d{2})を参照しています。
このパターンで検索を実行した結果が下記になります。
そして、置換を実行した結果が下記です。
漢字2文字とスペース+2桁の数字に囲まれた「ダッシュ」という文字を「スラッシュ」に置換することができました。単純な「ダッシュ」→「スラッシュ」の検索置換ではない、複雑なパターンの中での置換が実行できたわけです。
この要領でさらにこのパターンを試してみます。
(^AOS).(¥d{3}.$)
・(^AOS)→行頭+「AOS」の文字列をグループ化
・「.」→任意の1文字
・(¥d{3}.$)→3桁の数字+任意の1文字+行末までをグループ化
となっています。
これを検索した結果が下記です。
行頭にある製品の型番にヒットしました。
そして、この検索結果に対する置換文字列が
$1a$2
・$1→1つ目の正規表現グループを参照
・「a」
・$2→2つ目の正規表現グループを参照
置換結果はこうなりました。
製品の型番のようにパターン化された文字列をうまく検索置換できています。
SDL Trados Studio 2014の検索置換で実際に正規表現を使用してみる
さて、以上を踏まえていよいよSDL Trados Studio 2014の検索置換で正規表現がどの程度使えるのかを試してみたいと思います。ワイルドカードのような結果にならなければいいんですが……。
まずは検索です。簡単なところからいってみましょう。
¥d{3}(3桁の半角数字)を実行します。
結果は、
お、いけた。
じゃあ、これはどう?
[A-Z]{3}[A-Z][¥d]{3}[A-Z]¥s
(大文字アルファベット3文字 + 大文字アルファベット1文字 + 3桁の半角数字 + 大文字アルファベット1文字 + スペース)
検索ぅ!!
おお!!
いけたいけた。
正規表現いいじゃないですか。
これは結構期待感ありますね。
ではいよいよ肝心の置換。ここができてくれると非常に便利なんだけど……。
先ほどの[A-Z]{3}[A-Z][¥d]{3}[A-Z]¥sを、()を使用して([A-Z]{3})[A-Z]([¥d]{3}[A-Z]¥s)と2つのグループ分けをしました。
それに対する置換文字列として
$1a$2(1つ目の正規表現グループ + 「a」 + 2つ目の正規表現グループ)
できた!!
おおう。
いけるじゃないっすかこれ。
Trados 2014の正規表現はなかなか使えそうですね。これはすばらしい。
もう一度ためしてみましょうか。
検索文字列に(¥d{2})mm(2桁の半角数字+「mm」)
置換文字列に$1+「 」(半角スペース) + 「mm」(1つ目の正規表現グループ + 半角スペース + 「mm」)
置換結果はこう。
だっはー!!
いけますね。
「30mm」が「30 mm」、「20mm」が「20 mm」。
数字と「mm」の間に半角スペースを挿入することができました!!
いいですね。
結論としてはSDL Trados Studio 2014の正規表現はかなりいけるっぽいですね。
ちなみにダメだった例としては「^」(行頭)の検索がうまくいきませんでした。
もしかしたら行頭とか行末っていう概念自体がないのかも知れないですね。
あ、後最後に1つ。
「$」とか「¥」みたいな正規表現で使用する文字(メタキャラクタ)を普通の文字として検索したい場合は、前に「¥」エスケープマークを追加して検索を実行します。
「$」を普通の文字として検索する場合は「¥$」とします。
どうでしたでしょうか。
またまた長い記事になってしまったんですが、わかりやすく説明できていますでしょうか。
もう一度言いますが、結論としてTrados 2014の正規表現はなかなかすばらしいということがわかりました。ほんの少しでも翻訳者さんの作業効率アップに役立てればいいんですが……。
なお、次回からはSDL Trados Studio 2014のタグの検証機能あたりに触れてみたいと考えております。引き続きお付き合いいただければ嬉しく思います。