- ベストアンサー
正規表現の使い方
仕事で悩んでいます。 私の仕事はログファイルから、月々何件アクセスしたか調べる仕事です。 コマンドプロンプトでsort、grep、wcなど色々使い方を勉強していくうち、 今度は難しいのが出てきて悩んでいます。 そのまま書き移したら、皆さんは分からないし、会社のプライバシーに関わるので、簡単に書きます。 例えば、 ABC10 ABC10 ZP-22 AB-V5 AA10 PP122 と数字があり、 頭文字のAの部分を集めたいところに私は grep -e "資料番号の頭文字" 入力ファイル > 出力ファイル とコマンドプロンプトで打ち、下記の通りになりました。 AB-V5 AA10 AB-V5 AA10 だが、問題は途中にあるAB-V5は仲間ではないので、 それを省きたいのです。 上記の例は数少ないので手入力でもできますが、実際は1万以上もあるので、 手入力はできません。 上司に聞いたところ、 A[0-9].* の正規表現を使えと言われましたが、 全くやり方わかりません。 正規表現について勉強したのですが、全く理解ができず、仕事が遅れています。 皆さんの知恵を借りたいと思います。 よろしくお願いします。
- rundmark
- お礼率16% (19/115)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数0
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>正規表現について勉強したのですが、全く理解ができず、仕事が遅れています。 勉強したのに「全く理解できない」と言う状況がどういう状況かわかりません。難しく考えすぎてるのではないでしょうか? 以下のサイトでは分かりやすく実例で説明されています。 いかがでしょうか? http://www.chimimo.com/sed/
その他の回答 (2)
- g_vikke
- ベストアンサー率16% (15/90)
とりあえず、windowsで秀丸エディタとか使って 練習してみたらどうでしょうか? エディタで検索するとき 正規表現がつかえるので色々試せると思いますよ。 確かヘルプに上記のような説明やサンプルもあった 気がします。 エディタなので確認がしやすいですよ。
- a-saitoh
- ベストアンサー率30% (524/1722)
> だが、問題は途中にあるAB-V5は仲間ではないので、 では、先頭のAB-V5は仲間なのでしょうか? 抽出するデータの条件を明確にしない限り、何もできませんよ。 例では駄目です。規則が必要です。 たとえば、「AAで始まって3文字目から行末までは数字だけである行」とか。
関連するQ&A
- 正規表現で5文字切抜き
正規表現で5文字切抜き 正規表現について悩んでいます。秀丸エディタで正規表現を使いたいと思っています。 各行に任意の文字列(スペース、ハイフン、カンマ、アンダーバー、半角全角英数等含む)があります。 先頭行から5文字を残して残りは削除したいと思います。 5文字以下はそのまま残したいと思います。 例) aaaaabb⇒aaaaa ab cdef⇒ab cd a ⇒ a aa⇒aa 「^.{1,5}」とやると、先頭から5文字選択できるのはわかります。 「^.{1,5}(?=.+)」とやっても選択できるのはわかります。 ただし、6文字以上は削除とした場合、どのように正規表現を組み立てればよいでしょうか?
- ベストアンサー
- その他([技術者向] コンピューター)
- 秀丸の正規表現(HMJRE.DLL V1.92)で、
秀丸の正規表現(HMJRE.DLL V1.92)で、 以下のことが可能かどうか教えてください。 ある2つの文字列のいずれも含まない行を 正規表現とGREPで抽出したいのです。 (ほかの手段でもかまいません) たとえば AAAA ABCDEF BCDEFG EFGHI といったテキストデータがあった場合 "ABC"と"DEF"のいずれも含まない行であれば AAAA EFGHI を抽出したいのです。 以上、よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現で「除く」
windows用のエディタの「VIVI」というのを使っています。 grepで「2002/09/01」という文字列を含まないテキストを検索したいのですが、正規表現での検索の方法を教えていただけないでしょうか。 #どのエディタも同じではないかもしれませんが。 #自分は、正規表現のことは素人です。単に上記条件の日付のみを変更して使いたいだけ・・ (^^;
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現教えてください。
正規表現を教えてください。 YYYYMMDD_aa._aa_bbb.txt とあったとき YYYYMMDDは日付をあらわし, aa._aaはサーバ名をあらわして bbb.txtはファイル名をあらわすとき YYYYMMDD aa._aa bbb 値は変化するものでYYYYMMDD_サーバ名_fail.txtは変わらないとした時 それぞれをあらわすperlでの正規表現を教えてください。 まとめてあらわすのではなく、ひとつずつを表す方法でお願いします。
- 締切済み
- Perl
- 正規表現で
正規表現で、英大文字と記号だけからなる文字列、を表すにはどうすればよいでしょうか。言い方を変えると、とにかく英小文字は含まないという事なんですが… [^a-z]+ かなと思ったのですがダメでした。 123#ABC : OK 123#aBC : NG みたいな感じです。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 「マッチしない」正規表現の書き方
正規表現について、おたずねします。 文字列 abc,def,ghi のいずれかにマッチする正規表現は (abc|def|ghi) ですよね。 それでは、「abc,def,ghi のいずれにもマッチしない」正規表現は、どう書けばいいのでしょうか? あちこち調べましたが、どうしてもわかりません。 ただし、if $a =~ /(abc|def|ghi)/ などで、=~ を !~ に直す、というのはナシです。あくまでも右辺の式の中で表現したいのですが…
- 締切済み
- Perl