- 1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ]
- 正規表現(Regular Expression)スレです。
質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
- 710 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:45:45 ]
- 正規表現でバッチ処理的な事したとき最速なのってやっぱperlか?
- 711 名前:デフォルトの名無しさん [2008/04/16(水) 13:58:17 ]
- ruby
- 712 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:20:48 ]
- まじか。ruby早いのか
- 713 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:24:48 ]
- perlの方が糞速いよ
- 714 名前:デフォルトの名無しさん [2008/04/17(木) 04:26:31 ]
- 2ちゃんではurlを書き込むと自動的にリンクが貼られますが、
2ちゃん外のurlだとhttp://がime.nu/に置換されます urlが2ちゃん内か外かを判断するにはどうやっているのでしょうか。 urlかどうかを判断し、リンクを貼るところまではネットで調べて↓のようにできたのですが、続きがわかりません。 ereg_replace("(http)(://[[:alnum:]\S\$\+\?\.-=_%,:@!#~*/&]+)","<a href=\"\\1\\2\">\\1\\2</a>",$str); どうかよろしくお願いします。 言語はPHPです。
- 715 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:00:53 ]
- 2chの中だったら
2ch.netというURLが必ず入るわけだから、 それが含まれている文字列にマッチするかしないかを確認すればいだけじゃないの
- 716 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:37:42 ]
- 2ch.netだけだと、
www.example.com/2ch.net/ がマッチしちゃうよ
- 717 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:41:25 ]
- じゃぁ
//[^/].*2ch.net/
- 718 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 16:16:02 ]
- itemが必ず入ってい<mark>〜</mark>を検索する方法はありましか?
その場合itemがない<mark>〜</mark>があり、これはヒットさせたくありません。 javaです。 正規表現は:<mark>.*?</mark>(?<!item.*?) <mark> item </mark> → うまくいく <mark> item </mark> <mark> </mark> <mark> item </mark> → うまくいかない ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑_↑↑↑↑↑↑↑↑↑ 1個目のヒット_____________2個目のヒット
- 719 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:03:59 ]
- それがXMLデータなら明らかにミスアプローチだと思う。
- 720 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:42:27 ]
- >>718
そこに書かれている条件だけなら、 <mark>[^<]*item[^<]*</mark> で上手くいくかもしれない。 <marK>とかのタグが入れ子するかもー、ということなら正規表現じゃムリ。
- 721 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:57:24 ]
- 正規表現でファイルに文字が存在するかチェックしています。
存在していたら中の文字を返す仕様です。 /(<grep\s*([^\s]+)\s*-\s*([^\s]+)\s*>.+<\/grep>/ <grep foo-../hoge/google.txt>マッチします。</grep> この場合、../hoge/google.txt内fooという文字があったらに「マッチします。」を返します。 この応用で質問なのですが、 <grep foo-../hoge/>aaa<grep foo-./foo/>aaaaa</grep>aa</grep> という文のように入れ子の場合、 <grep foo-../hoge/>〜</grep>と <grep foo-./foo/>〜</grep>で 2回チェックしたいのです。 この場合、最長マッチでできるのですが以下のような場合も考えられるのでどうすればいいか困っております。 <grep foo-../hoge/>aaaaa</grep> <grep foo-./foo/>aaaaa</grep> どんな書き方がいいでしょうか? ご鞭撻のほどよろしくお願いします。
- 722 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:00:02 ]
- </grep>がどっちの</grep>を指してるのかわかりづらい
あとそういう入れ子構造は正規表現の苦手な分野だから、ほかの手が使えるならそっちのがいい
- 723 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:21:25 ]
- 教えてください。
正規表現じゃないアスタリスクってなんていうんですか? たとえばsyslog.logから始まるファイルを表示するとき $ ls syslog.log* こんな感じで見てるんだけど、このときの*はメタキャラクタ? また、こういうときに正規表現を使ってみたい場合はどうすればいいですか?
- 724 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:42:30 ]
- わいるどかーど
- 725 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:04:26 ]
- ls | grep 正規表現
- 726 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:16:35 ]
- ありがとうございます。
なるほど、確かにシェルのワイルドカードですね。 納得しました。
- 727 名前:721 mailto:sage [2008/04/17(木) 22:14:46 ]
- >>722
ありがとうございます。 C言語やJAVAなんかの入れ子のifのような感じといえばわかりやすいかもしれません。 こういう処理はどうやればいいのでしょうか? 正規表現とは関係ないですがよろしくお願いします。
- 728 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:05:52 ]
- >>727
パーズして構文木を作って、構文木に対していろいろ処理をするのがふ つう。 楽をしたいなら、その変な文法をやめてXMLにしてしまえ。DOMにしてか らイロイロすればいい。
- 729 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:40:10 ]
- >>728
ありがとうございます。 正規表現でやりたいです。 テーブルタグの入れ子処理みたいなものは正規表現では難しいのですね。。。 <table> <tr> <td> <table> <tr> <td></td> </tr> </table> </td> </tr> </table>
- 730 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:07:38 ]
- 普通の正規表現では不特定回数の入れ子を扱えません。
- 731 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:38:21 ]
- 正規表現を基礎から学習したいのですが、チュートリアル・サイドで
人妻がどうのとか、女子高生がどうしたとかが概説に載っていて嫌な気分になりました。 そこできちんとした書籍を購入しようと思いますがオススメはありますでしょうか? ポケット・リファレンスあたりかな?
- 732 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:48:12 ]
- 正規表現って学習するようなものか?
たしかに、正規表現を何か難しいもののように扱って、 「正規表現が分かる!」とか謳ってる本は巷に溢れてるけど、 役に立つと思ったのは一冊もないね。 処理系のリファレンスでも読んで試行錯誤するのが一番いいと思う。
- 733 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:59:21 ]
- さっそくご回答いただきありがとうございます。
なるほど、モヤモヤがすっきりしました。 とりあえずエディタのヘルプで生きていきます。
- 734 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:56:54 ]
- 普段使いする1冊。
www.amazon.co.jp/dp/4798109126/ 一応理論的な説明もなくはないけどメインはリファレンス。 簡単な例(任意の1文字にマッチさせるとか)から 進んだ内容(先読みとか)まで幅広くてグッド。
- 735 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:23:34 ]
- 詳説正規表現第2版の何が不満なのか
- 736 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:30:00 ]
- もうすぐ3版が出るところだろ
- 737 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:29:32 ]
- 今週
- 738 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:25:14 ]
- 公式で買ったらもう届いたw
- 739 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 04:50:49 ]
- 2版だってまだ読み終わってないよorz
- 740 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:33:46 ]
- >>738
マジかよwいいなー
- 741 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:54:46 ]
- >>738
書評頼むよ 2版からどう変わってた?
- 742 名前:デフォルトの名無しさん [2008/04/24(木) 22:03:25 ]
- 教えてください
地図のアドレスなのですが abc.com/map.php?x=123.4567890&y=34.56789012&z=1 これを下のように置換したいのですがどうやればよいのでしょうか? x=とy=の値を取り出して def.com/map.html?x=123.4567890&y=34.56789012&z=19 のようにしたいのですがよろしくお願いします。 rubyを勉強中です。
- 743 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 07:01:17 ]
- URIはパーサ使えばいいやん
- 744 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:13:28 ]
- >>742
'&'(と'?')でsplit()してからの方が楽だったりするかな。
|

|