1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
403 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 14:08:08 ] a b c aa bb cc aaa bbb ccc これのインデントあわせって正規表現だけでできますか?perlです。
404 名前:デフォルトの名無しさん [2008/01/29(火) 14:41:11 ] <A HREF="hogehoge.jp/************** ">hogehoge.jp/**************</A> <A HREF="hogehoge.jp/************** ">hogehoge.jp/**************</A> …以下続く という文字列があるのですが、**************の部分に暗号化された文字(例:=7%be%8e%e4)が50文字くらい並んでいて 毎回文字数や形式が変動してしまいます。 <A HREF=" のほうはいいのですが、 HTML上に表示される文字のほうも暗号文字になってしまうので困っています。 正規表現で、HTML上に表示される文字のほうだけ、「リンク」という文字に変える方法はありますでしょうか?
405 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:32:43 ] >>403 右寄せ?左寄せ? まあ無理なんじゃない >>404 pack形式と実行環境書け
406 名前:405 mailto:sage [2008/01/29(火) 15:42:18 ] >>404 の例は「美人」だと思われるが、それでいいのか? あとhogehogeやめれexampleにしろ
407 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:55:11 ] >>404 です 実はプログラミングを知らないので、実行環境はテキストです… 秀丸でできればおkです…
408 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:56:06 ] >>403 正規表現では無理だろう。 幅固定なら awk が楽だが、 最長のに合わせるんだったら perl で普通に ガシガシ書いてきゃいいんじゃね?
409 名前:デフォルトの名無しさん mailto:age [2008/01/30(水) 00:44:52 ] perlでweb製作しています。 $txt の中の href="URL" の中のURLを http:example.net/test.cgi?url=エンコードしたURL の形に一括変換したいです。 たとえば href="search.com/str.cgi?first=1&p=%BA%C7%B9%E2 " href="http:example.net/test.cgi?url=http%3A%2F%2Fsearch.com%2Fstr.cgi?%2Fsearch%3Ffirst%3D1%26p%3D%25BA%25C7%25B9%25E2" のようにしたいです。 $txt内には複数のhref=""があり、href=""外にもURLがあり、その部分は変換不要です。 $cgi = "http:example.net/test.cgi?url="; $txt =~ s/(href\=\")([\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\$]*\")/$1&cgi$2/g; $2の部分をエンコードすればよさげなのでエンコード法を調べてみましたが↓を↑に組み込み方がわかりません。 どなたか、お教えください。 $str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
410 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:18:38 ] use strict; my $txt = <<TXT; href="search.com/str.cgi?first=1&p=%BA%C7%B9%E2 " href="search.com/str.cgi?first=1&p=%BA%C7%B9%E2 " TXT $txt =~ s{(?<=href=").*?(?=")} { no locale; sprintf q{http:example.net/test.cgi?url=%s}, do{$_ = $&; s/([^\w ])/'%' . unpack('H2', $1)/eg; tr/ /+/; $_} }eg; print $txt;
411 名前:デフォルトの名無しさん mailto:age [2008/01/30(水) 01:26:23 ] >>410 THANKS なんか、できそうですが、PERL事態初心者で構文自体は理解できませんorz
412 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:34:55 ] echoが含まれない行の検索って、java正規表現でできますか? ^.(?<!echo)*$ ではできませんでした。
413 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:45:01 ] >>412 すいません。できました。 下の2つともできたのですが、「.」のおく位置で何か違いはあるのでしょうか? ^(.(?!echo))*$ ^((?!echo).)*$
414 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:56:44 ] それ上手く動かないだろ
415 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:40:06 ] ふつうは^(?!.*echo) これでだめなら ^(?!.*echo).*でもいい >>413 1つ目はダメ。たとえば次のような行: echo このeを.で評価したとき、継続の文字はcho。 echoという文字が続いているわけじゃないから、マッチは成功してしまう。 2つ目はうまくいくだろう。
416 名前:デフォルトの名無しさん [2008/02/01(金) 00:31:08 ] 質問です、PHPにおいてファイルパスの正規化をしています。 // テスト文字列、"/test/oame/doe/0"にしたい。 $location = "/test/./oame//doe/abc/../0/"; // 置き換え部分 $location = ereg_replace("//+","/",$location); /* "//" -> "/" */ $location = ereg_replace("/\./","/",$location); /* "/./" -> "/" */ $location = ereg_replace("/.+?/\.\./","/",$location); /* "/___/../" -> "/" */ $location = ereg_replace("/$","",$location); /* 末尾の"/"を削除 */ ereg_replace3番目の、/../の処理がうまくできていません、 $locationが空になります。これはどのように記述したらいいのでしょうか?
417 名前:デフォルトの名無しさん [2008/02/01(金) 00:51:28 ] $location="/test/./oame//doe/abc/../0/"; $x=$location.split('/'); $location='/'+$x[1]+'/'+$x[3]+'/'+$x[5]+'/'+$x[6]+'/'+$x[8];
418 名前:デフォルトの名無しさん [2008/02/01(金) 01:15:56 ] phpよく知らんけどこんなとか? $location = ereg_replace("/[^/]+?/\.\./","/",$location); /* "/___/../" -> "/" */
419 名前:416 [2008/02/01(金) 02:04:34 ] どうもPHP固有の仕様に関することかもしれないので、 そっちで聞いてみたいと思います。 どうもありがとうございました。
420 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 13:56:31 ] .(?!xx)* は.*中に「xx」がない、との解釈になるのでしょうか? よって下記とは異なる、でよろしいでしょうか。 (?!xx).*
421 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:08:06 ] 正規表現で遊べないかと考えていたんけど、みさくら語を正規表現で表すとしたらどうやる?
422 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:56:32 ] ぐぐったら出てくるじゃないか ttp://home.1555.info/misakura.html とりあえず上のJavaScriptの意味を調べてみては その過程で正規表現より他に必要なものが見つかるはず
423 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:29:34 ] マッチさせた後どう処理するかの方が肝なので、正規表現だけ考えても仕方ないかと。
424 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:45:00 ] 蒲焼《か はやき》 深川《ふか がわ》 ↑のような《》に挟まれた半角スペース、全角スペースを指定する正規表現はどう書けばいいか教えて下さい。よろしくお願いします。
425 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:36:32 ] >>424 >>1
426 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:50:02 ] ********aaa aa * ****age p * kk ** *aaaa のようなものの*を行頭から連続している部分だけ-に換えたいんですが --------aaa aa * ----age p * kk ** -aaaa こういうような二重絞り込みみたいなものってperlのワンライナーでやる方法が知りたいです perl -pe '/^[\*]*/ & tr/*/-/' みたいな感じで条件を合成できそうな気がするんですが
427 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:02:31 ] perl -pe 's/^\**/q{-} x length($&)/e'
428 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:46:33 ] どうもありがとうございました 正規表現だけじゃできないんですね perlも勉強することにします
429 名前:424 mailto:sage [2008/02/08(金) 19:34:16 ] ソフトは秀丸使ってます。実装言語とかよくわかりません。
430 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:58:15 ] テンプレのサイトで少しは勉強してきなよ
431 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:10:24 ] やってみって《》とその中までは指定できたけどその先がよくわからんのです。
432 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:27:02 ] [《 》] ↑だと《》も一緒に指定してしまうし、だめだ。
433 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:36:18 ] あきらめてこれで検索したら? \f《[^《]*\f \f[^》]*》\f 置換するなら"\1置換後文字\3"とかで指定すればいいんだし。
434 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:09:08 ] phpなんですが、たとえば $a = "aiueo"; $b = "aiu"; と、あるときに 変数$bの中身(aiu)が$aに含まれるかを調べたいんですがどうしたらいいでしょうか。
435 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:17:22 ] strstr
436 名前:434 mailto:sage [2008/02/12(火) 11:16:40 ] わかりました!ちょっと難しく考えすぎていたようです。 正規表現使う必要ないんですね。 ありがとうございます。
437 名前:デフォルトの名無しさん [2008/02/13(水) 00:28:11 ] ・・・これだ
438 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:18:34 ] phpです。 htmlファイル中の <p> test あああ いいい ううう </p> を preg_match('/<p>((.|\n)+)<\/p>/', $source, $test); でマッチさせると $test[0]には全体、[1]には一致した部分が入っていて正しいのですが [2]に空白も入ってしまっているようです。 Array ( [0] => <p> test あああ いいい ううう </p> [1] => test あああ いいい ううう [2] => ) このようになります。 上手く間にある文字列だけをマッチさせる方法はないでしょうか。
439 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:26:34 ] >>438 二個目のカッコ (.|\n) にマッチした箇所がキャプチャされてるね。 後方参照されないように (?:.|\n) とか。 ?: の意味は自分で調べて。
440 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:34:54 ] 素早いレスありがとうございます。調べてみます。
441 名前:デフォルトの名無しさん [2008/02/15(金) 18:54:31 ] Perl5.6でIPアドレスの範囲と場所をマッチングさせたいと思っています。 192.168.1.* を東京 172.16.0.* 〜 172.16.3.* を大阪 という場合はどのように判定させればいいのでしょうか。 Perl歴3日目なもんで・・・どなたかお力を。
442 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 19:00:38 ] とりあえず、正規表現でやろうとするのは間違ってますよ。 split /\./ してからごにょごにょするか、 CPANのNetAddr::IPのようなモジュールが使えないか検討してください。
443 名前:デフォルトの名無しさん [2008/02/15(金) 19:04:12 ] なるほど。分けてから比較するんですね。 方向性が分かっただけでも助かりました。 ありがとうございました。
444 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:05:50 ] そういう場合はサブネットマスク使ったほうが綺麗にかけるぞ
445 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:54:30 ] 255.255.252.0とかで切っててもいけるもんなんですか?
446 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:40:36 ] bitでかんがえてみろ
447 名前:デフォルトの名無しさん [2008/02/19(火) 10:54:06 ] テキストエディタで検索・置換をするのに 特定のワードで始まる行末7文字の指定はどう書けばいいでしょうか? それとDOSのワイルドカードだと AA○○.txt AA××.txt とあったときren AA*.txt BB*.txtとすれば BB○○.txt BB××.txt となったと思うのですが、正規表現でも同様な事ができますか? こちらもテキストエディタでの検索・置換です
448 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:07:30 ] PHP正規表現チェッカー ttp://www.rider-n.sakura.ne.jp/regexp/regexp.php
449 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:34:36 ] >特定のワードで始まる行末7文字の指定 これの意味がわからない、例を出せ例を
450 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:36:10 ] テキストエディタっつってもできることできないこといろいろあるので 具体的なソフト名を出した方が回答が得られやすいと思われ。
451 名前:デフォルトの名無しさん [2008/02/19(火) 17:48:38 ] コミュニケーション能力が不足しているな。 エディタの使い方とか正規表現とか覚える前に 人間として最低限必要な事を先に覚えたほうがいいんじゃない?
452 名前:447 [2008/02/19(火) 17:55:55 ] 答えられないカスどもは黙っててください わかる人だけが、質問に答えてくれればいいです では引き続きよろしくお願いします
453 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:07:23 ] 晩飯なににすっかなー
454 名前:デフォルトの名無しさん [2008/02/19(火) 18:37:56 ] サンマの缶詰が安かったから、これで炊き込みごはん。 米1合を洗ってダイソーで買った105円の土鍋に入れる。 そのままサンマの缶詰1缶まるごとブチ込む。 水加減は、缶詰の水分と合わせて200mlくらいになるように調節。 30分くらい浸して火にかける。 最初は中火より強め。5分くらいで吹いてくるから弱火にして、さらに5分。 (赤子泣いてもフタ取るんじゃないぞ) 炊き上がったら5分むらす。 缶詰はサンマでなくても、鯖とかイカとか赤貝とか、好みのでOK。 味が濃い目の缶詰がいいな。味が薄いときは醤油や砂糖やみりんを加えてから 炊くといいよ。
455 名前:447 [2008/02/19(火) 18:40:47 ] エディタはJedit X1.11です 例) あああ〜〜〜1234567 いいい〜〜〜1234567 ……… ……… 〜〜〜は文字数などもバラバラな任意な文字列(全角含む) 行頭『あああ』で始まる行の、行末『1234567』を 別の文字列『abcd』等に置換したいのです
456 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:43:41 ] あああ腹へったなー
457 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:02:10 ] (?<=あああ).*(?=.{7}) -> abcd
458 名前:447 [2008/02/19(火) 21:51:39 ] >>452 おいおい気がついたらとんでもない事勝手に書いてるな〜(苦笑 >>457 ありがとうございます 戻り読みと先読みですか、なるほど! ですが、これだと『〜〜〜』の部分になってしまいますよね……
459 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:38:16 ] 1合炊きの土鍋なんてあるのか 今度ダイソーに行ったら見てみよう
460 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:44:48 ] >>459 中国製の土鍋なんてどんな毒が混ざってるか分からんぞ。
461 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:38:19 ] ニ○リの土鍋以外にでたっけ
462 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 08:47:18 ] >>452 こういうことすぐ言う人って、昔いじめられてた人なんでしょ?可哀想にね
463 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:24:13 ] めんどくさがりなので俺なら↓でやってしまうな /^(あああ.*?)(.{7})$/\1abcd/
464 名前:447 [2008/02/21(木) 18:24:17 ] >>463 ありがとうございます いろいろ調べながらやってますがダメなようです もうちょっとがんばってみます
465 名前:デフォルトの名無しさん [2008/02/21(木) 18:30:35 ] せっかくヒントもらえたんだし、頑張ってもらわんとな
466 名前:デフォルトの名無しさん [2008/02/22(金) 00:06:24 ] >>396 いまラッパーつくってるよ ちょっとまてて
467 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:22:33 ] 2008-03 発売(予定) 「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳) ISBN 978-4-87311-359-3 定価 5,040円
468 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 16:48:39 ] おや、和訳出るのね。今回は田和さんじゃないんだ もったいない気もするがロングテールの人なら鉄板か
469 名前:466 [2008/02/22(金) 21:49:08 ] できましたよ 使ってみてください サポートはここで fx10.web.fc2.com/index.html
470 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:35:41 ] >>468 原書では追加はPHP関連とかがあったけど、以前のものからの改訂部分って ほとんどなかったんだよね。 訳しなおしてるのかなあ?
471 名前:デフォルトの名無しさん [2008/02/23(土) 20:12:38 ] php4なのですが、 <img src="new.gif" alt="New" width="10"> を正規表現で置換してaltの値だけを表示にすることは出来ませんでしょうか よろしくお願いします
472 名前:デフォルトの名無しさん [2008/02/23(土) 20:21:04 ] <img src=\".*?\" alt=\"(.*?)\".*?> \1 でできたよ
473 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:28:49 ] 秀丸で検索するときに文字列Aを含んで且つ文字列Bを含まない行全体を指定したいのですが、 (含む行) ^.*文字列A.*\n (含まれない行) ^((?!文字列B).)*\n で個別にはわかるんですがこの2つを合わせてて検索したいのですがどう書けばいいのでしょうか?
474 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:21:55 ] (^.*文字列A.*\n|^((?!文字列B).)*\n)
475 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:22:43 ] あ、間違えたわ
476 名前:デフォルトの名無しさん [2008/03/06(木) 01:07:25 ] dll | ^ dll
477 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:06:30 ] 微妙にイケメソがいるな
478 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:12:32 ] ☞
479 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:35:28 ] (6 ’) (6
480 名前:デフォルトの名無しさん [2008/03/07(金) 17:01:30 ] 質問です。 小数点以下の右端の0を全部取り除きたいです。 小数点以下が0しかない場合は、小数点も含めて取り除きたいです。 3.00 → 3 3.02000 → 0.02 どう書けばよいでしょうか? sprintf("%g", num) とすればいけるかと思いましたが、numが19120730.0000の場合に 1.91207e+07となり、使えませんでした。 perl5.8です。宜しくお願いします。
481 名前:デフォルトの名無しさん [2008/03/07(金) 17:04:54 ] ____ // ̄ ̄`| /|断 だ | / |る が | /イ \___| / |// /| | /_\ /_/_レ| ∧o>/ イ≡三\| /ミ// r-<彡/| / /彡 ヾ\_O> | /iハ-イ)  ̄ヽ彡| `/ i∧二 // | / (`ーv\ // /| `<j`ーヾ_ゝ // (r| `< ノ /リ| `< //7| `</ / | `<|
482 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:16:02 ] 正規表現関係ないな。脳みそつかえ
483 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:32:03 ] >>480 s/\.?0+$//
484 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:40:12 ] 約2万件のデータがあるのですが 使用する文字が半角全角交じりで途中に記号やスペースもあるかもなのです 文字数もわかりません 2つのキーワードで全部取れますか? キーワード@東京都 キーワードA3-5-7 何区何町だったか思い出せません>< 何故か357って数字だけ覚えてました^^
485 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:59:33 ] 東-京/都 とかなってたら終わりだな
486 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:44:11 ] 東京都 市ってなかったっけ?w
487 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:23:42 ] 東京都.*?[33三].+?[55五].+?[99九] で抽出してあとは手動かなぁ、俺がやるなら 漢数字が入る地名とかいちいちはじいてられないし
488 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:42:33 ] <object> ←これ検索したいんですお願いします
489 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:32:38 ] /<object>/
490 名前:デフォルトの名無しさん [2008/03/09(日) 01:17:00 ] >>1 みたいにアンカー機能を付けたいのですがどのように書けば良いのでしょうか?
491 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:41:21 ] >>490 >>1 を見てその質問の仕方なのかよ!?
492 名前:デフォルトの名無しさん [2008/03/10(月) 21:13:30 ] <hoge aaa="aa\"bb<cc>dd" zzz="ee\"ff<gg>hh">value</hoge> ↓ value と置換する正規表現を教えて下さい 言語は JavaScript で、戻り読みは使えません
493 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:23:42 ] 正規表現よく分かりません>< <[^/]+>([^<]+)</.+>
494 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:03:14 ] 入門 正規表現 サンプルがJavaで吹いた
495 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:12:35 ] >492 ブラウザのJavaScriptならXPathのほうが速くて正確
496 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:39:06 ] >>495 ブラウザじゃないです 取得したページからタグを削除することを目的としています
497 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:41:25 ] >>495 493の正規表現でいいんじゃね?
498 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 08:57:13 ] 秀丸ではスペースは直打ちがデフォですか? 何か気持ち悪い。
499 名前:デフォルトの名無しさん [2008/03/12(水) 01:26:27 ] Perlの正規表現で[^\.-z]っていうのがあったんですけどこれってどういう文字が当てはまるんですか?
500 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:36:32 ] >>499 ASCIIのコード表でも見てみればいいんじゃないかな
501 名前:デフォルトの名無しさん [2008/03/12(水) 06:02:36 ] >>500 見てみたけどピリオドのほうがzより後に来てるのでこれおかしいんじゃないのと思って質問したのですが・・・
502 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 06:04:10 ] どこの表にそんなでたらめが書いてあるんだよ
503 名前:499 [2008/03/12(水) 06:07:45 ] あ、あれ・・・ もう一回調べてみたらピリオドのほうが先に来てる・・・