文章の置き換えNo.27591
eigodoo1 さん 10/02/05 17:06
 
「和文改行英文」の組み合わせを「英文タブ和文」に置き換えるにはどうすればいい
ですか?

例:

第十三章 雑則(第百九十七条〓第二百四条)
Chapter XIII Miscellaneous Provisions (Articles 197 to 204)
第十四章 罰則(第二百五条〓第二百十五条)
Chapter XIV Penalty Provisions (Articles 205 to 215)
附則
Supplementary Provisions
第一章 総則
Chapter I General Provisions
(目的)
(Purposes)
第一条 この法律は、加齢に伴って生ずる心身の変化に起因する疾病等により要介護
状態となり、入浴、排せつ、食事等の介護、機能訓練並びに看護及び療養上の管理そ
の他の医療を要する者等について、これらの者が尊厳を保持し、その有する能力に応
じ自立した日常生活を営むことができるよう、必要な保健医療サービス及び福祉サー
ビスに係る給付を行うため、国民の共同連帯の理念に基づき介護保険制度を設け、そ
の行う保険給付等に関して必要な事項を定め、もって国民の保健医療の向上及び福祉
の増進を図ることを目的とする。
Article 1  The purposes of this Act are to improve health and medical care a
nd to enhance the welfare of citizens. With regard to people who are under c
ondition of need for long-term care due to disease, etc., as a result of phy
sical or emotional changes caused by aging, and who require care such as for
 bathing, bodily waste elimination, meals, etc., and require the functional
training, nursing, management of medical treatment, and other medical care,
these purposes are to be accomplished by establishing a long-term care insur
ance system based on the principle of the cooperation of citizens, solidarit
y, and determining necessary matters concerning related insurance benefits,
etc., in order to provide benefits pertaining to necessary health and medica
l services and public aid services so that these people are able to maintain
 dignity and an independent daily life routine according to each person's ow
n level of abilities.

[ ]
RE:27591 文章の置き換えNo.27592
秀まるお2 さん 10/02/05 17:22
 
 和文か英文かというのは正規表現でうまく判定させるのは難しいです。なので、
とりあえず、

  2行セットのテキストデータ → 1行目+タブ+2行目

 のデータに変換する、という例で説明させていただきますと、

 検索(S):   ^(.*)(\n)(.*)$
 置換(S):   \1\t\3

 ということで可能かと思います。

 eigodoo1さんは以前にも「和文と英文」に関する置換についての質問をされて
いたと思うんですが、過去に質問された内容、およびそれに対する僕の返事とい
うのが全部記録として残っているので、そちらも是非参考にして欲しいです。

 過去の記録は、過去ログサイトに残っています。

過去ログサイト:
  http://hidemaruo.dip.jp:81/

 ここの「Namazuによる全文検索システム」の所に、例えば

 「eigodoo1 タブ」

 とか、

 「eigodoo1 置換」

 とかで検索していただくと、以前どういう質問をなさって、最終的にどういう
解決策になったか(あるいは解決出来なかったか)のような記録がほとんど出て
くると思います。

 例えば和文と英文を正規表現でうまく表現することが難しい、というような話
も、過去に大変長いやりとりをさせていただいた記録がありまして、その辺の話
も読み直すことが出来ます。

 その辺も参考にして欲しいです。

[ ]
RE:27592 文章の置き換えNo.27593
秀まるお2 さん 10/02/05 17:56
 
 すみません。和文と英文の順序を逆にしないといけないのでしたら、間違えて
ました。大変失礼しました。

 検索(S):   ^(.*)(\n)(.*)$
 置換(S):   \3\t\1

 でないとダメでした。

 すみません。

[ ]
RE:27593 文章の置き換えNo.27594
秀まるお2 さん 10/02/05 18:08
 
 以前似たような質問をされて、それに対して僕がお返事させていただいてる記
録が見つかりました。

    http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x25803.html

 いろいろ難しいお仕事をなさっておられるのですね。

[ ]
RE:27592 文章の置き換えNo.27595
eigodoo1 さん 10/02/08 08:49
 
> 和文か英文かというのは正規表現でうまく判定させるのは難しいです。なので、
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> その辺も参考にして欲しいです。


1.新しい質問を行うときは、過去の記事を事前にチックしている。それでも不明な時
は質問することにしている。今回がそれです。過去の履歴はすべて保存している。


2. 「Namazuによる全文検索システム」には過去の記事がほとんど載っていない。





[ ]
RE:27593 文章の置き換えNo.27596
eigodoo1 さん 10/02/08 08:50
 
> すみません。和文と英文の順序を逆にしないといけないのでしたら、間違えて
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> すみません。


感謝する。

[ ]
RE:27594 文章の置き換えNo.27597
eigodoo1 さん 10/02/08 08:51
 
> 以前似たような質問をされて、それに対して僕がお返事させていただいてる記
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> いろいろ難しいお仕事をなさっておられるのですね。



誰でも得手不得手がある。小生には秀まるおの力が必要なのだ。

[ ]
RE:27593 文章の置き換えNo.27603
eigodoo1 さん 10/02/08 17:33
 
> すみません。和文と英文の順序を逆にしないといけないのでしたら、間違えて
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> すみません。


あるファイルを上記の正規表現で実行すると、「文字列が長すぎて処理できません」
というエラーがでました。しかし、それにかまわず、実行すると、とりあえず置換さ
れたような気がします。確かに長い文章があって、その部分は処理できなかったので
はないかと思います。メールで送るので調査してください。

[ ]
RE:27603 文章の置き換えNo.27604
秀まるお2 さん 10/02/08 18:32
 
 送っていただいたファイルでテストしてみたら、たしかに途中で「置換文字列
が長すぎて処理出来ません」のエラーになってしまいました。

 解決策を2つ提案させていただきますが、その前に、置換用の正規表現パター
ンを以下のようにしたらいいことが分かりました。

検索:   ^([^\t\n]*[\x81\x40-\xFC\xFF][^\t\n]*)\n([^\t\n]+)$
置換:   \2\t\1

 これはつまり、1行目が「和文」というこで、つまり、全角文字が1文字以上
入っているという条件を入れてます。さらに、すでに置換済みの行を再度置換す
ることの無いように、タブ文字を含んでいる行は置換しないようにしてみました。

 こっちの方がお勧めです。

 この正規表現パターンを使って欲しいです。


 で、本題の方に入らせていただきますと…

■1.秀丸エディタV8.00βを使って置換する方法

 実は、次の秀丸エディタVersion 8.00では、置換の際の文字列長さの制限が2
倍に拡張されてまして、これを使えば今回送っていただいたデータもすべて一発
で置換が出来ます。

 なので、V8.00βの最新版をインストールして、それで置換していただく、と
いうのが一番手っ取り早いです。

 ただし、V8.00のβ版はまだ不安定な面があるので、あくまで使うのはこの置
換の作業の時だけ、という風にして欲しいです。

 つまり、手順としては、

 1.秀丸エディタV8.00βをインストールする。
 2.置換の作業をする。
 3.置換の作業が終わったら、またVersion 7.11をインストールする。

 という風になります。

■2.手作業と併用する方法

 秀丸エディタV7.11で置換を実行してエラーになると、そのエラーになった位
置にカーソルが移動します。なので、とりあえずその段階で、エラーになった行
は手作業で直していただく、という方法で解決が可能です。

 手作業で直すとしたら、和文の行をまるごと範囲選択して「編集・切り取り」
として、英文の最後にカーソル移動して、タブ文字を挿入して、その後ろに「編
集・貼り付け」とする、みたいな感じで整形出来ると思います。

 そして、またその位置から置換コマンドを続行すればいいかと思います。

 「全置換」を使うとファイルの先頭からやり直しになってしまうので、そうす
ると、以前の僕の紹介させていただいた正規表現パターンでは、置換済みの行が
また置換されて変なことになってしまいます。なので、もし全置換でやり直すの
でしたら、この発言の先頭にある正規表現パターンを使っていただく必要があり
ます。

--------------------------------------------------------------------

 ということで、かなりややこしい話になってしまいましたが、それだけ高度な
作業をなさっておられるということで、なんとかトライの程お願いします。

 万が一のために(特にβ版で不具合が出る可能性もあるので)、変換前のデー
タは別の所に取っておいていただいて、何かおかしい点があった時は元のデータ
からやり直していただく、ということも是非お願いします。

[ ]
RE:27604 文章の置き換えNo.27607
eigodoo1 さん 10/02/09 09:07
 
> 送っていただいたファイルでテストしてみたら、たしかに途中で「置換文字列
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>からやり直していただく、ということも是非お願いします。


上記ご提案の正規表現パターンを実行しても、やはりエラーが出ました。そのファイ
ルをメールしましたので解決してください。ファイル名は昨日と異なりますが、内容
は同じと思います。


[ ]
RE:27607 文章の置き換えNo.27608
秀まるお2 さん 10/02/09 09:48
 
 再度送っていただいたファイルでも同じだと思いますが、つまり、秀丸エディ
タのV7.11だと、置換できる文字列の長さの制限が、半角文字で8000文字程度ま
でという制限があって、それで置換出来ない行がどうしても出てきます。

 V7.11を使う限り、エラーになるのは回避出来ないです。なので、方法として、

 ■1.V8.00βをインストールしてそれで置換処理する。

 か、または

 ■2.V7.11を使うのであれば、エラーになった行だけは手作業で修正する。

 のどちらかやっていただくしか無いです。

 後者を選択されてもなのエラーが出るという話でしょうか。僕の所で、

  検索:  ^([^\t\n]*[\x81\x40-\xFC\xFF][^\t\n]*)\n([^\t\n]+)$
  置換:  \2\t\1

 の正規表現パターンを使った限りは、「全置換」でも大丈夫でしたけ。もしエ
ラーが消えないということでしたら、とにかくエラーが出る箇所については全部
手作業で修正していただいて、その位置以降は「下候補」コマンドで1つずつ置
換していって欲しいです。

 それか、どうしもうまくいかないのでしたら、V8.00βでやって欲しいです。

 V8.00βはいろいろ細かいバグは出てはいますけども、ファイルが壊れるとか、
置換でデータが化けるとか、そういう致命的なバグは出ていませんので、その点
では安心して使っていただけると思います。もうかれこれ半年以上ベータテスト
してるし。

[ ]
RE:27608 文章の置き換えNo.27610
秀まるお2 さん 10/02/09 10:11
 
 最近誤字が多くてすみません。

> 後者を選択されてもなのエラーが出る

 「後者を選択されてもなおエラーが出る」です。

>  の正規表現パターンを使った限りは、「全置換」でも大丈夫でしたけ。

 最後の「け」が余計でした。

[ ]
RE:27608 文章の置き換えNo.27611
santoku さん 10/02/09 12:32
 
部外者の発言ですがご容赦ください。

下記のマクロ(例文5万行でテスト)を試してください。
マクロの使用方法が分からなければ、その旨を投稿のこと。


秀丸担当殿へ:
    ・1行の文字数制限はありましたか?
    ・あれば値は何ですか? (ヘルプの何処に記載されていますか)
    ・#limitの設定方法を質問者に助言して欲しい


これ以降がマクロ

// AAA\nBBB\n  ->  BBB\tAAA\n
// 条件:
// ・処理する範囲のデータは2行ペア(のみ)であること
//  (和文・英文の区別はしていない)
// ・ペアの2行は隣接していること
//  (ペアの間でなければ空白行があっても良い)
// ・範囲選択していなければ全体を処理する
// 注意:
// ・クリップボードを利用するので文字コードが変化すかもしれない
//  ヘルプの「機種依存文字について」を参照のこと

// 下記の数値を「1行の文字数制限値」に設定すること
#limit = 2000;

if( selecting && (seltopcolumn | selendcolumn) )
{
    message "行選択でない!";
    endmacro;
}

disabledraw;
if( !selecting ) selectall;
cut;
#top = lineno;
beginclipboardread;
while(1)
{
    $s1 = getclipboard;
    if( $s1 == "" ) break;
    if( ascii($s1) == 0x0A ) insert $s1;
    else
    {
        $s2 = getclipboard;
        if( (strlen($s1) + strlen($s2)) >= #limit ) goto ERR;
        #n = strstr($s2, "\n");
        if( #n == -1 ) insert $s2 + "\t" + $s1;
        else insert leftstr($s2, #n) + "\t" + $s1;
    }
}
enabledraw;
setclipboard "";
message "完了";
endmacro;

ERR:
beginsel;
movetolineno 1, #top;
paste;
enabledraw;
setclipboard "";
message "1行の文字数制限をオーバーした!";
endmacro;

[ ]
RE:27611 文章の置き換えNo.27612
santoku さん 10/02/09 12:35
 
失礼しました。

>秀丸担当殿へ:
ではなく「秀まるお2殿へ」ですね。

[ ]
RE:27612 文章の置き換えNo.27613
秀まるお2 さん 10/02/09 13:08
 
 すみませんが、テストデータを持ってる僕の立場から書かせていただきますと、
僕の書いた方法でやって欲しい所です。

 もちろん、マクロで処理していただいてもいいですけども、実はeigodoo1さん
の所は標準のエンコードがUnicode(utf-16)に設定されてるので、単純にマクロ
のソースコードを提示してそれを実行してくれと言うのが難しいです。

[ ]
RE:27611 文章の置き換えNo.27614
秀まるお2 さん 10/02/09 13:09
 
>     ・1行の文字数制限はありましたか?
>     ・あれば値は何ですか? (ヘルプの何処に記載されていますか)
>     ・#limitの設定方法を質問者に助言して欲しい

 これについては今すぐ調べて、別スレッドにてお返事させていただきます。

[ ]
RE:27613 文章の置き換えNo.27615
秀まるお2 さん 10/02/09 13:16
 
 マクロテストしてみたらやはりダメでした。

 ということで、やはり僕のやり方(タグ付き正規表現による置換をやって、エ
ラーが出る箇所だけは手作業で書き換えるか、またはV8.00βを使って置換す
る)ってことでお願いします。

[ ]
RE:27615 文章の置き換えNo.27617
santoku さん 10/02/09 13:41
 
> マクロテストしてみたらやはりダメでした。

ダメでしたか。
役立たずのマクロで申し訳ないです。
質問者の方はマクロを無視してください。

参考としてですが、どこがダメだったか教えてもらえませんか?

[ ]
RE:27611 文章の置き換えNo.27620
eigodoo1 さん 10/02/09 15:19
 
>部外者の発言ですがご容赦ください。
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>endmacro;



santoku:

一体、誰に向かって「その旨を投稿のこと。」と言っておるのだ。部外者は引っ込ん
でおれっ。俺の許可なく立ち入るなっ!

[ ]