• ベストアンサー

Cygwinの正規表現

こんにちは、いつもお世話になっております。 タイトルの通りなのですが、 連続する0~9の数字が3桁と4桁の行が 入り混じっているテキストに対して、 3桁のもののみをgrepしたいのですが、 上手く行きません。 この場合の正規表現はどのようにすれば 良いでしょうか? ちょっと稚拙かも知れませんが、 1時間ぐらい錯綜しています。 何卒よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

---- test.txt ---- aaa998 999bbb aaa000bbb 111 aaa1001 1002bbb aaa1003bbb aaa1004bbb 2222 に対して、 egrep '(^|[^0-9])[0-9]{3}($|[^0-9])' test.txt で aaa998 999bbb aaa000bbb 111 という出力が得られました。これでよろしいでしょうか。

hikaru2005
質問者

お礼

ご回答、有難う御座います。 ご案内頂いたコマンドで、問題は解決致しました。 非常に助かりました。 これで、正確なデータベースが作れます。

その他の回答 (2)

回答No.2

> 「|」とカッコによるグルーピングが使えれば、まとめて1つの正規表現にできます。grepで通用するかどうか分かりませんが egrep なら大丈夫ですよ。

hikaru2005
質問者

補足

補足有難う御座います。 egrepも試してみたのですが、成功しませんでした。 ちょっと弱りました・・・

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

grepで扱える正規表現のレベルが分からないので最も基本的なものだけ使用しますと、数字が3文字連続するものは [0-9][0-9][0-9] ですね。 このままでは数字4文字以上のものも該当するので、前後に数字が来ないものだけに限定すると [^0-9][0-9][0-9][0-9][^0-9] となります。 これだと数字3文字が行頭や行末にあると困るので、それも含めるには・・・「|」を使って複合条件にすればよいですが、基本的な正規表現だけでやるとすれば、 [^0-9][0-9][0-9][0-9][^0-9] ^[0-9][0-9][0-9][^0-9] [^0-9][0-9][0-9][0-9]$ ^[0-9][0-9][0-9]$ と4回、grepを行うというのも分かりやすくて良いでしょう。それぞれ「行中に数字3桁」、「行頭に数字3桁」、「行末に数字3桁」、「1行に数字3桁のみ」です。 「|」とカッコによるグルーピングが使えれば、まとめて1つの正規表現にできます。grepで通用するかどうか分かりませんが (^|[^0-9])[0-9][0-9][0-9]($|[^0-9]) のような感じ。 [0-9]は\dで代用可能かも。これも正規表現のレベル次第なのですが。

hikaru2005
質問者

補足

ご回答有難う御座います。 しかし、残念ながら 全て試してみたのですが、どれも成功しませんでした。

関連するQ&A

  • 正規表現の初心者です

    正規表現初心者です。 なぜ、 [0-9]+ という正規表現が下記の112にあたらないのでしょうか? 0-9(数字)の一文字以上の繰り返しなので、複数桁の数字にマッチすると思ったのですが・・。 echo 112|grep -e "[0-9]+" > (マッチせず)

  • 正規表現で「除く」

    windows用のエディタの「VIVI」というのを使っています。 grepで「2002/09/01」という文字列を含まないテキストを検索したいのですが、正規表現での検索の方法を教えていただけないでしょうか。 #どのエディタも同じではないかもしれませんが。 #自分は、正規表現のことは素人です。単に上記条件の日付のみを変更して使いたいだけ・・ (^^;

  • 正規表現について

    いま.Netで正規表現にチャレンジしているのですが、どこが問題なのか分からず、投稿させていただきました。 正規表現のパターンです。 \\[Cc]\[(?<$0>[0-9]+),(?<$1>[0-9]+),(?<$2>[0-9]+)\] で、マッチさせたい文字列は、 \C[255,255,255] です。「[255,255,255]」の数字の部分は、一桁から三桁までの数字であれば何でもOKです。 マッチしないことは、http://jsregex.com/を使って調べました。 どうぞよろしくお願いします。

  • 正規表現で半角数字1桁のみを全角数字に変換

    お世話になります。 JavaScript(JSP)で、 正規表現で半角数字1桁のみ(2桁以上は変換しない)を、 全角数字に変換する方法を教えてください。 たとえば、 ”hoge3hoge5”文字列内の、 半角数字1桁のみを、 正規表現で、全角数字1桁に、それぞれ変換   ↓ ”hoge3hoge5” あわせて、 半角数字が2桁以上、連続で続いている場合には 変換せずに、半角数字のままにしておきたいです。 ”hoge33hoge5”    ↓ 正規表現で、半角数字1桁のみを、全角数字1桁に変換 (半角数字2桁以上は変換しない) ”hoge33hoge5” 以上になります。 もしご存じの方がいらっしゃいましたら、 よろしくお願いします。

  • 正規表現で一桁の数字を二桁に置換する方法

    いつもお世話になっています。 yahoopipesでページからrssを作っています。 「2012/12/12」などとなっている数字をpubdateとしてソートしたのですが、一桁の月日の場合「2012/1/1」など二桁になっていないためか、うまく降順に並びません。 二桁の数字はそのままで、一桁の数字は頭に0をつけて二桁にする正規表現はどう書けばよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現

    テキストファイルからコメント行以外から文字列"bbb"を含む 行をgrepで抽出したいと思っております。 コメント行→"#"で始まる行と"--"で始まる行 先頭にスペースがある場合もあるので、結局 先頭に「0個以上のスペース+("#"or"--")」がある行は対象外 として、文字列"bbb"を含む行をgrepで抽出したいと思っています。 下記、foo.txtの中から下記の抽出対象の2行のみを抽出したい場合、 どういった正規表現を書けばいいか教えてください。 【foo.txt】 aaa bbb → 抽出対象 aaa bbb →抽出対象 # aaa # bbb →抽出対象外 #aaa # aaa --aaa --aaa -- aaa -- bbb →抽出対象外 -aaa -bbb - aaa ご存じの方がいらっしゃいましたら、よろしくお願い致します。

  • 秀丸の正規表現(HMJRE.DLL V1.92)で、

    秀丸の正規表現(HMJRE.DLL V1.92)で、 以下のことが可能かどうか教えてください。 ある2つの文字列のいずれも含まない行を 正規表現とGREPで抽出したいのです。 (ほかの手段でもかまいません) たとえば AAAA ABCDEF BCDEFG EFGHI といったテキストデータがあった場合 "ABC"と"DEF"のいずれも含まない行であれば AAAA EFGHI を抽出したいのです。 以上、よろしくお願いします。

  • 正規表現

    数字と大文字、小文字のアルファベットは入力OK。 記号も入力OK。でも、記号の中でも「”」、「.」は ダメ。しかも、10桁くらい入力できるようにする。 を表す正規表現は [a-zA-Z0-9&&[\"\.]]* と思ったのですが、 正しく表す正規表現はどの様なものになるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • 正規表現中の()について

    正規表現中の()について 繰り返し正規表現を行い、マッチ部分を配列に入れる場合の疑問です。 今回、while文を使わずに書いてみようとしています。 #3個以上数字が連続していたら、配列へ入れる。…(1) my @data = ( $str =~ /\d{3,}/g ); #3個以上連続している、同じ文字を取り出して、配列へ入れる。…(2) my @data = ( $str =~ /(.)\1{2,}/g ); 1つめのほうは期待通りに動きました。 が、2つめは正規表現内の()で囲まれた範囲しか、配列に入ってくれませんでした…。 具体的には、$str='AAABBB'なら、 @data='A','B'になってしまいました。(AAA,BBBを配列に入れたい) たぶん、while文と$&を使えば書けそうだとは思いますが、 今回は、この書式で期待通りに動かす方法を知りたいです。 AAA,BBBを配列に入れるにはどのように書けばよいでしょうか? どうか、ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現

    いつもお世話になっております。 度々で申し訳ありませんが、正規表現について教えていただきたいと思います。 「数字」または「-」プラス「数字」の場合のみOKになるように するにはどのように書けばよろしいでしょうか。 たとえば・・・ 10 → OK -10 → OK 53 → OK -53 → OK +53 → NG 45- → NG <環境> PHP:4.4.2

    • 締切済み
    • PHP