GlossaryMatchの簡易機能版を作成しましたので公開します。
詳しくはトップページのタブにある「WildLight」をご参照ください。
ワード正規表現の記事にある「お題3」を記述したWildLight用辞書ファイルを、以下にサンプルとして置いておきます。
どうぞ、ご参考にされてください。
投稿者: Terry Saito コメントする
GlossaryMatchの簡易機能版を作成しましたので公開します。
詳しくはトップページのタブにある「WildLight」をご参照ください。
ワード正規表現の記事にある「お題3」を記述したWildLight用辞書ファイルを、以下にサンプルとして置いておきます。
どうぞ、ご参考にされてください。
投稿者: Terry Saito 2件のコメント
さて、「禿頭帽子屋の独語妄言 side A」の「# 翻訳者のための正規表現~勉強会の解説、その2」になぞって、お題その3をワードの正規表現を使って表現してみたいと思います。
お題その3
【検索】
([一-鶴ァ-ヾぁ-んー。、・]) ([一-鶴ァ-ヾぁ-んー。、・])
【置換】
¥1¥2
【解説】
例えば、「あいうえお△かきくけこ」の場合は、「お△か」が対象としてヒットします。¥1には「お」が代入され、¥2には「か」が代入されます。置換句に「¥1¥2」と半角スペースなく記述しているので、置換結果は「おか」となります。
このようなワードの正規表現を使う上で、指定する文字範囲を知る必要がありますね。以下に参考として列記します。
(「」内が対象の文字範囲指定です)
スペースの処理は、私も結構使います。原稿処理や翻訳文チェック時に使用しています。英文のスペーシングが2スペース以上のもの(入力ミス等による)を1スペースに修正したり(「([a-zA-Z0-9,.])△{2,}([a-zA-Z0-9])」→「¥1△¥2」)、紛れ込んだ全角スペースを半角スペースへ置き換えたり(「□」→「△」)、でも、こういう置換作業をしていて心配なのは、思いもよらないところまで置換されてしまう事ですね。そういう時のために、置換作業をする際に、置換後の文字列が蛍光ペン表示されるようにすると良いです。また、自分が指定した検索文字列がどのようにヒットするのかを勉強する上でもビジュアル化するのに便利です。
置換後文字に蛍光ペンを付ける方法:「検索と置換」ウインドウで、「置換後の文字列」を入力する際に、「検索」のところの「書式」をクリックし、「蛍光ペン」を選択します。
投稿者: Terry Saito コメントする
4月23日に翻訳勉強会「十人十色」で、正規表現入門セミナーを行いました。その時の講師の一人 高橋さんが、受講者から寄せられたお題を例にして、秀丸エディタによる正規表現の実例と説明をブログ「禿頭帽子屋の独語妄言 side A」で連載されています。
私は、業務ではマイクロソフトワードを使ってそういった処理しているので、どうしてもワードの「ワイルドカード+正規表現」の組合せでの実現方法を考えてしまいます。Twitter で、高橋さんのお題説明に沿ってワードの正規表現説明をしてみようか?とツイートしたら、意外に反響がありましたので、高橋さんのご了解をいただいて「ワード正規表現」を当ブログで説明していきたいと思います。
最初に断っておきますが、私もワードの正規表現を使い始めて、まだ日が浅いです。「それ違うぞ」「こう表現した方がいい」というツッコミを是非お願い致します。
〜〜〜〜
ここでは、私の持つWindows Word 2007とMac Word 2011をベースに説明を進めます。他バージョンの方はごめんなさい。でも、やり方は同じ筈です。
ワード上でこれらの検索・置換を行う上でのお約束として、「ワイルドカードを使用する」をレ点してONにして下さい。
Windows Word 2007: CTRL+H で「検索と置換」ウインドウを出し、「オプション(M)」を押すと「検索オプション」が出ます。そこに「ワイルドカードを使用する」がありますので、レ点を入れてONにしておいて下さい。
Mac Word 2011: shift+command+H で「検索と置換」サイドウインドウを出し、ギアマークを押して「高度な検索と置換」を選択します。「▼」を押すと「検索オプション」が出ますので、そこにある「ワイルドカードを使用する」にレ点を入れてONにします。
〜〜〜〜
今回は、高橋さんのブログの「# 翻訳者のための正規表現~勉強会の解説、その1」のお題内容をワードの正規表現を使ってやってみます。
表記については、高橋さんのブログの記述に従います。
- 「お題」と【解説】の中では半角スペースを△、全角スペースを□で表します。
- 【検索】、【置換】の中では、半角スペースも全角スペースも実際の文字で表しています。
したがって、【検索】【置換】の文字列は、そのままコピペすれば試すことができます。
お題その1
・Page△12 → 12ページ
【検索】
Page ([0-9]{1,})
【置換】
¥1ページ
【解説】
この場合の「([0-9]{1,})」とは、検索対象は「半角数字が1回以上連続している箇所」で、それを¥1へ代入します。お題の例ですと「12」がこれに該当します。
秀丸エディタの正規表現で、 ¥f (区切り文字)で区切られた前後の式の結果が、それぞれ ¥0, ¥1 へ代入されると習いました。ワードでは半角括弧()内の式の結果が代入されます。()の登場する順番で ¥1, ¥2… と代入されます。秀丸エディタは¥0からでしたが、ワードは ¥1 から始まります。
お題その1の応用
・Page△12 → 12ページ
・Page24 → 24ページ
さて、これがワードでは問題なのです。私の知る限り、秀丸エディタの正規表現にある「?」(0か1回)に該当する表現がないのです(ちなみにワードでは「?」は任意の一文字という意味になります)。従って、上記のお題その1の置換を行い、かつ、以下の置換を行って初めて、この応用問題をクリアできます。
(もし、1文で表現できる方法をご存知の方は、教えて下さい)
きました!きました!読者さんから、こうすれば一行で表現できる!という案が、それを以下に示します。
【検索】
Page([0-9]{1,})
Pag[e ]{1,2}([0-9]{1,})
【置換】
¥1ページ
【解説】
Pag[e△]{1,2} で、Page, Pag△, Page△, Pagee, Pag△e, Pag△△ が対象になります。ここで欲しいのは「Page」と「Page△」ですね。それ以外の「Pag△, Pagee, Pag△e, Pag△△」 が有り得るか?って事ですが、無いと考えていいでしょう。
正規表現は組合せ方を工夫する事で、色々な事ができますが、こういう発想はとても素敵ですよね。参りました(笑)
@trantran93 さん、ありがとうございました。
先のお題その1と違うのは、Pageの後ろにあった半角スペースをなくしただけです。半角スペースがあるのとないのと…という表現ができないので、2段階で置換する形になってしまいます。
例えば、Page△{0,}([0-9]{1,}) なんて記述ができれば良いのですが、上で説明した通り {0,} というゼロ指定が許されていません。(「検索した文字列」に指定したパターン マッチングが正しくありません…というエラーになる)
お題その2
・長いカタカナ語を最初の3文字にしたい
例:「クルーズ・コントロール」を「クルー」に
【検索】
([ァ-ヾ][ァ-ヾー・]{2})[ァ-ヾー・]{1,}
【置換】
¥1
【解説】
([ァ-ヾ][ァ-ヾー・]{2})[ァ-ヾー・]{1,} :1文字目が全角カタカナで、2文字と3文字目が長音、中黒、全角カタカナのいずれか、4文字目以降が長音、中黒、全角カタカナのいずれかである文字列が検索され、最初の3文字の文字列が ¥1 へ代入される。
〜〜〜〜〜〜〜
上記のお題その1の応用のようなケースですと、2つの置換作業を行わないと対応できません。こういう作業を一括で行うにはマクロに盛り込んでしまうのが1つの手ですが、検索対象が変わるたびにマクロを書き換えるのも手間が掛かります。
そこで私が使っているのが拙作のGlossaryMatchなんです。上記のケースですと、以下のようなテキスト型の辞書ファイルを作り、全置換で適用すれば、一度に適用できます。
Page ([0-9]{1,}) <TAB> ¥1
Page([0-9]{1,}) <TAB> ¥1
検索対象が変われば記述を変えるだけで対応できます。ちょこちょこ検索対象を変えるなら、辞書ファイルをノートパッド等で開いたままにして、記述を変更→上書き保存→GlossaryMatchで実行…のサイクルを繰り返せば楽です。
以上、ご参考です。
投稿者: Terry Saito
3月20日に翻訳勉強会「十人十色」主催の「Felix Hands-on Seminar」がありました。その時のセミナー動画をYouTubeに公開致しましたので、ご覧ください。なお、録画漏れがあり、継ぎ接ぎなビデオになっていますが、概略は把握出来ると思います。また、音声・画質が余り良くないので予めご了承ください。
翻訳勉強会「十人十色」:Felix hands-on セミナー
Felix とは、翻訳支援ツールです。TradosやTransitなどが有名ですが、Felix は軽快な動作とサポートの厚さが素晴らしいと思います。このセミナービデオを見て、どういうものか、大枠を把握出来ると思います。ちなみに、Felix のURLは以下の通りです。
投稿者: Terry Saito
Word版GlossaryMatchをちょっとだけ修正して、Ver. 1.01 にしました。
修正内容は、辞書の置換元用語の先頭に半桁の「~」(チルダ)を入れておくと、蛍光ペン付けしないようにしました。
ここでは、この機能を使った使用例を示します。
このような部署名を企業の中で見掛けないでしょうか?
色々な文書に、作成者や改訂者情報、検討チームリストなど、部署名が良く書かれています。こういう部署名などは間違いをなくすために、置換作業で処理したいところです。しかし、困るのが、漢数字に全角半角数字の混在ですね。
これを解決する為に作った辞書ファイルのサンプルが次のものです。(漢数字へ対応するためのサンプルです)
GlossaryMatchでは、蛍光ペンのない文字列に対して、置換元用語の検索を行い、該当するものがあれば置換先用語に置換し、最後に蛍光ペンを付けます。
但し、置換元用語の先頭に、半角「~」(チルダ)が入っている場合は、置換後に蛍光ペンが付きません。例えば上の辞書の第一行目の記述に従うと、「一課」が「1課」と置換されますが、蛍光ペンは付かず、その後の処理でも、この「1課」は置換対象となります。
この辞書ですと、漢数字の一課~五課までを半角数字の1課~5課に置換するものの、蛍光ペンは付けない為、その後の行の処理では置換対象となります。つまり、六行目の「経理([0-9]{1,})課」以降の行で置換の対象となります。
モードの選択で「2. 完全置換」を選択すると、以下のようなプログレスバーが現れ、置換が終了すると終了画面が出ます。
上記のサンプル辞書には、全角数字を半角にするための処理を入れていなかったため、経理1課~経理5課までが置換されずに残っていますが、漢数字だった部署名は全て置換されています。
このように、辞書ファイルに処理の順番で正規表現を記述しておく事で、色々な処理を行う事ができます。
なお、辞書の置換元用語にある「([0-9]{1,})」は、半角数字で1桁以上連続した数字を意味します。1課でも12課でも、123課でも対象となります。そして置換先用語にある「\1」は、置換元用語のカッコ内「()」で該当した数字が代入されます。
つまり、「経理900課」があると、900 が \1 の位置に代入され、Accounting Dept. 900 と置換されます。