- ベストアンサー
正規表現で00で始まる画像のgrep検索方法と行の先頭にマッチする^の意味について
- 正規表現を使用して、00で始まる画像をgrep検索する方法についてのアドバイスをお願いします。また、行の先頭にマッチする^の意味についても教えてください。
- 現在は00+.+.+(?=jpg)という正規表現を使用していますが、これでは「004-main.jpg」だけでなく「400-thumbs.jpg」なども検索されてしまいます。よりスマートな書き方を教えてください。
- また、行の先頭にマッチする^は、改行の後の文字を指すのでしょうか?例えば、指定された文字列の前に必ず特定の文字列があるという条件を指定することはできるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
関連するQ&A
- さくらエディタでGrep検索する時の正規表現
さくらエディタでGrep検索する時の正規表現 「ABC」が含まれていて「DEF」が含まれない行という正規表現は どのように指定すればよいのでしょうか?
- ベストアンサー
- その他([技術者向] コンピューター)
- 正規表現で「除く」
windows用のエディタの「VIVI」というのを使っています。 grepで「2002/09/01」という文字列を含まないテキストを検索したいのですが、正規表現での検索の方法を教えていただけないでしょうか。 #どのエディタも同じではないかもしれませんが。 #自分は、正規表現のことは素人です。単に上記条件の日付のみを変更して使いたいだけ・・ (^^;
- ベストアンサー
- その他(プログラミング・開発)
- この検索を正規表現にするにはどう書けばいいでしょう?
(name.gif)、('name.jpg')、(name_a.png)があって その中身のback.gifだけを検索で拾いたいのです。 自分なりに調べて \w+\w+(.gif|.jpg|.png) で ()、('')を除いた中身だけを拾えるようになったのですが、時々 (name-b.gif)、('n-ame.jpg')、(n-a-m-e.png) のようにハイフンが混じっているものが拾えなく困っています。 ハイフンも混じっても大丈夫な正規表現の書き方を どなたか教えてください。
- ベストアンサー
- PHP
- 正規表現の否定先読みについて
<a href="http://example.com/aaaa/hogehoge1.jpg" target="_blank"><img src="http://example.com/aaaa/hogehoge1.jpg" width="100" alt="huge1"></a><br />hogehoge<br /><a href="http://example.com/bbbb/hogehoge2.jpg" target="_blank"> <img src="http://example.com/bbbb/hogehoge2.jpg" alt="huge2"></a> こういうHTMLがあるとします。改行はなく1行です。 このHTMLから正規表現で 『width="100"がついていない<img>タグ』 のsrc=""までを抜き出して置換したいのです。 期待する結果は <img src="http://example.com/hage/hogehoge2.jpg" です。 そこで /<img src="http:\/\/.*?.jpg"\s(?!width)/ というパターンを試しましたが、.*?の最短一致が思った通りにいかず <img src="http://example.com/aaaa/hogehoge1.jpg" width="100" alt="huge1"></a><br />hogehoge<br /><a href="http://example.com/bbbb/hogehoge2.jpg" と、1つ目の<img>が入ってしまい、2つ目の<a>タグまで抜き出されてしまいます。 これをうまくwidth="\d+"と入っていない<img>タグのみに適用させる方法はないでしょうか? どなたかよろしくおねがいいたします。
- ベストアンサー
- PHP
- パターン検索の方法、正規表現
<TD><IMG src=".jpg"></TD> <TD>●<BR>単語<BR>単語</TD> というパターンの箇所を一気に <TD><IMG src="●.jpg"></TD> <TD>●<BR>単語<BR>単語</TD> に検索置換したいのですが、どうしたらいいのでしょうか?●は4~5桁の数字がほとんどですが、中に英文字が入ったものもあります。 今、わからなくて、●をコピペして.jpgの前にはりつけて作業しています。これがわかるとすごくたすかります。 小学生が宿題教えてっていってるような質問ですみませんが、すごい困ってるのでどなたか教えて下さい。 あと、この正規表現、パターン検索を勉強するのに わかりやすい本とか、参考になるウェブとかあったら教えて下さい。マニュアルを読んでもちんぷんかんぷんなんです・・・T-T
- 締切済み
- その他(プログラミング・開発)
- 正規表現を用いた特定の位置までの抜き出し方法
なんか考えると正規表現じゃムリじゃないと思えてきてならないのですが、 Wikipediaのデータのある部分の抜き出し方法です。 [[画像:abcd.jpg|thumb|あいうえお([[あかさ]][[たなは]])]] これを、これとして抜き出したいです。 「[[画像:」、「]]」で括られています。それで括られた内部に「[[」、「]]」が 存在する場合もあります。 [[画像:abcd.jpg|thumb|あいうえお([[あかさ]][[たなは]])]][[画像:abcd.jpg|thumb|かきくけこ([[かきく]][[けこさ]])]] このパターンなら2つを抜き出したいです。 [[画像:abcd.jpg|thumb|あいうえお([[あかさ]][[たなは]])]][[かきくけこ|さしすせそ]] このパターンなら1つを抜き出したいです。 こんな事、可能でしょうか?
- ベストアンサー
- PHP
- grepにマッチした正規表現の文字列を取得したい
grepにマッチした正規表現の文字列を取得し、マッチした文字列を 一覧で取得したいのですが、方法がわかりません。 ※例 grep [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名 不明点あればお知らせください。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現で置換
その1 $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; その2 $str = "<img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "<img src="./foo/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; このような文字列があった時に、次のように従って置換したいです。 1.imgのタグの内部に、「http://yyy.hoge.jp/hage/hige/xxx.jpg」という文字列があった場合、「./foo/faa/fii/xxx.jpg」という文字列に置き換える。 2.それ以外のURLの場合は置換しない。 3.その1とその2では「xxx.jpg」となっていますが、jpg以外の拡張子の場合も存在する。 4.日本語とURLの位置や個数はバラバラです。 5.URLの中のxxxとyyyは不定の文字列で、hage、hoge、hige、foo、faa、fiiは固定です。 6.使用している言語はPHPです。正規表現を1度だけでできれば理想的ですが、今回は2回に渡った処理でも問題ありません。 以上です。正しく処理できる正規表現、あるいは下記の正規表現の誤りを教えて頂ければ幸いです。 お手数ですが、よろしくお願い致します。 下記の方法では、うまくできませんでした。 $pattern = "/http:\/\/.*?hoge.jp\//"; $replacement = "./"; $str= preg_replace($pattern, $replacement, $str); $pattern2 = '/\/?hage\/hoge/'; $str = preg_replace($pattern2, '/foo/faa/fii', $str);
- ベストアンサー
- PHP
- 正規表現の初心者です
正規表現初心者です。 なぜ、 [0-9]+ という正規表現が下記の112にあたらないのでしょうか? 0-9(数字)の一文字以上の繰り返しなので、複数桁の数字にマッチすると思ったのですが・・。 echo 112|grep -e "[0-9]+" > (マッチせず)
- ベストアンサー
- Linux系OS
お礼
ご回答ありがとうございました。 また、アドバイスもいただき、ありがとうございました。 >grepもいろいろ種類があって、使える正規表現が違うものがある(正規表現が使えない紛い物まで存在する! >行頭や行末に対する置換は一度しか行われないことですが、これを正しく実装できていないエディタもあるので、注意が必要です(特に行頭)。 実はツールとエディタと双方で試していて、処理結果が微妙に違うのにも悩んでました。 大変勉強になりましたー!