- ベストアンサー
テキストエディタで4桁の数字のみを抽出
以下の条件でお願い致します。 【条件】 テキストエディタのgrep機能,置換機能のみで実現したい 【質問】 4桁の数字のみを抽出するにはどういった方法があるでしょうか? (該当行1行まるごとではなく「数字4文字」のみ) つまり株式の証券コードのみを残したいと言うことです。 お手数をおかけ致します。よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No3のお礼の記述の現象は不可解ですね。 とりあえず1行に2回以上数字4文字が出た場合に取り逃しすのは分かりますが。 さしあたり私の考えた表現を挙げます。 検索: ([0-9]{4}) 置換: ←\1→ 検索: \n 置換: 検索: →.*?← 置換: \n 「→」「←」の部分はあくまで例です。本文中に出てこない文字列にしてください。 なお、最初の数字4文字以前と最後の数字4文字以降は消えないので手作業で消してください。 No3お礼のURLのテキストで試したところ成功しました。(18個の数字4文字(内1個は年号)が残る) ソフトは「EmEditor」です。
その他の回答 (3)
- tokichim
- ベストアンサー率42% (88/205)
お使いのテキストエディタが「正規表現」による置換機能を持っていれば可能です。 以下はWZ-Editorというエディタの例。 検索:^.*([0-9]{4}).*$ 置換:\1 数字の4回繰り返しの前後に任意の文字列のある行を検索し、数字部分だけに置換します。
お礼
ありがとうございました。 sakuraエディタとApsalyで試した結果をご報告いたします。 コピー元のテキストは、 http://www.stockcafe.jp/index.php?m=stock&a=page_biztype_minichart&lc=3&mc=90 です。 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文字ずつの数字です。
- koko_u_
- ベストアンサー率18% (459/2509)
その 4桁の証券コードが行の何カラム目に現われるのか、 などがわかっていれば容易ですけど。 例えば、行の最初の 4桁などわかっているのであれば 検索:^([0-9][0-9][0-9][0-9]).*$ 置換:\1 などとすれば、可能だと思います
お礼
ありがとうございました。 4桁の数字が任意の場所なのですよねえ・・・。 難しいですね。
- Tasuke22
- ベストアンサー率33% (1799/5383)
テキストエディタで数値が4桁という認識は 不可能でしょう。 プログラムを作る必要があります。 あるいは、データが1行に固定の場所に目的の コードがあるなら、Excelなどで読み込み、 証券コードの列だけ取り出せばいいでしょう。
お礼
ありがとうございました。 4桁の数字は任意の場所ですね。 やはりプログラムが必要ですか。
お礼
ありがとうございました。 NoEdiotorで試したところ綺麗に残すことができました。 ←と→の部分は私の知らないメタ文字!?と狼狽しましたが、 そのまま置換部分に貼り付けてうまくいきました。 ←と→は本文に出てこない任意の文字、と言うことですね。 実は、ANo.4回答者SortaNerdさんの方法もSakuraエディタとApsaly では、うまく機能しませんでした。 原因は上記ソフトにあるのか、ソフトの設定がおかしいのか、 究明はできておりません。 答えてくださった方皆さん本当にありがとうございました。