プロが教える店舗&オフィスのセキュリティ対策術

以下の条件でお願い致します。

【条件】
テキストエディタのgrep機能,置換機能のみで実現したい

【質問】
4桁の数字のみを抽出するにはどういった方法があるでしょうか?
(該当行1行まるごとではなく「数字4文字」のみ)

つまり株式の証券コードのみを残したいと言うことです。
お手数をおかけ致します。よろしくお願い致します。

A 回答 (4件)

テキストエディタで数値が4桁という認識は


不可能でしょう。

プログラムを作る必要があります。

あるいは、データが1行に固定の場所に目的の
コードがあるなら、Excelなどで読み込み、
証券コードの列だけ取り出せばいいでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。

4桁の数字は任意の場所ですね。

やはりプログラムが必要ですか。

お礼日時:2008/05/19 21:48

その 4桁の証券コードが行の何カラム目に現われるのか、


などがわかっていれば容易ですけど。

例えば、行の最初の 4桁などわかっているのであれば

検索:^([0-9][0-9][0-9][0-9]).*$
置換:\1

などとすれば、可能だと思います
    • good
    • 0
この回答へのお礼

ありがとうございました。

4桁の数字が任意の場所なのですよねえ・・・。
難しいですね。

お礼日時:2008/05/19 21:56

お使いのテキストエディタが「正規表現」による置換機能を持っていれば可能です。


以下はWZ-Editorというエディタの例。
検索:^.*([0-9]{4}).*$
置換:\1
数字の4回繰り返しの前後に任意の文字列のある行を検索し、数字部分だけに置換します。
    • good
    • 0
この回答へのお礼

ありがとうございました。

sakuraエディタとApsalyで試した結果をご報告いたします。
コピー元のテキストは、
http://www.stockcafe.jp/index.php?m=stock&a=page …
です。

sakuraエディタ:
証券コードは全てHITしましたが、
その行全てが抽出されてしまいますね。
4桁のみの数字以外も含まれてしまいます。
置換後は、4つ4桁の数字があった行が4桁の数字1つのみ
になってしまいます。

Apsaly:
なぜかHITしませんでした。
お教えいただいた正規表現の論理は合っていると思います。

参考程度にこちらの最もうまくいったロジックを載せておきます。
1.
検:[^0-9]+
置:\1\n
2.()
検:[0-9]{1,3}\n
置:\1

1.で1-4桁の数字が縦1桁に残ります。
2.で1-3桁の数字を消そうとすると、4桁の数字の3桁分も削られ
最後に残るのは、膨大な改行と1文字ずつの数字です。

お礼日時:2008/05/19 22:14

No3のお礼の記述の現象は不可解ですね。


とりあえず1行に2回以上数字4文字が出た場合に取り逃しすのは分かりますが。
さしあたり私の考えた表現を挙げます。

検索: ([0-9]{4})
置換: ←\1→

検索: \n
置換:

検索: →.*?←
置換: \n

「→」「←」の部分はあくまで例です。本文中に出てこない文字列にしてください。
なお、最初の数字4文字以前と最後の数字4文字以降は消えないので手作業で消してください。

No3お礼のURLのテキストで試したところ成功しました。(18個の数字4文字(内1個は年号)が残る)
ソフトは「EmEditor」です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
NoEdiotorで試したところ綺麗に残すことができました。

←と→の部分は私の知らないメタ文字!?と狼狽しましたが、
そのまま置換部分に貼り付けてうまくいきました。
←と→は本文に出てこない任意の文字、と言うことですね。

実は、ANo.4回答者SortaNerdさんの方法もSakuraエディタとApsaly
では、うまく機能しませんでした。

原因は上記ソフトにあるのか、ソフトの設定がおかしいのか、
究明はできておりません。

答えてくださった方皆さん本当にありがとうございました。

お礼日時:2008/05/19 23:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!