1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
331 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:24:04 ] /image/[00-31]_[00-1f].jpg ↑00〜31↑00〜1f(16進数) 正規表現でこのように設定したいのですがうまくいきません。 /image/(00_00、01_01・・・10_0a・・・31_1f) こういったものを書きたいのですが可能でしょうか?
332 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:29:21 ] >>331 [] は一文字にしかマッチしないのでー。 正規表現はふつうは数値の範囲は指定できないのでー。 ([0-2][0-9a-f]|30|31)_[01][0-9a-f]\.jpg
333 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:19:37 ] >>331 もしかして、 10進部分と 16進部分を対応させたいと思ってる? それだと正規表現だけでは簡単に書けないと思う。
334 名前:デフォルトの名無しさん [2008/01/05(土) 11:31:41 ] 日本語の話しになってしまいますが、質問させてください。 >検索対象に正規表現が一致した場合 と >検索対象が正規表現に一致した場合 どっちが正しいのでしょう? 前者が正しいような気がするのですが、よく判らなくなってきました
335 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 12:04:31 ] 一致というよりマッチといいましょう。
336 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:24:34 ] そういえばどっちも言うような気がする。 文脈によるというかどっちを軸に語るかによるんじゃないかな。
337 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:36:47 ] 厳密に言うと受理だろうが、気にしすぎだとも思う
338 名前:デフォルトの名無しさん [2008/01/05(土) 21:41:39 ] プログラムの 「前」 ってどっちですか?
339 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:42:19 ] つまらんコピペだな
340 名前:デフォルトの名無しさん [2008/01/05(土) 21:45:36 ] じゃね? => ぢゃね?
341 名前:デフォルトの名無しさん [2008/01/06(日) 14:50:28 ] ここのFAQの中の手作業でNFAを作成ってページなんだけど capslockabcjp.kitunebi.com/handmade.html /***/にマッチしないきがするけど。
342 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:05:50 ] だからなんだよ。
343 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:29:12 ] 〠
344 名前:334 mailto:sage [2008/01/06(日) 15:59:55 ] レス有難うございます。やっぱり気にし過ぎですかね。 気にしない事にします。
345 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:17:00 ] if (ch == '/') st = 1; else if (ch == '*') st = 4; // 追加 図のほうに S4->S4 [label="*"]; だね
346 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:05:54 ] >検索対象(の文字列)が正規表現(で表されたパターン)にマッチした場合 パターンは固定だから、俺はこっちがしっくりくる
347 名前:デフォルトの名無しさん [2008/01/10(木) 03:38:22 ] "one two three four" "one three two four" にしたいのです。正規表現でスワップ(位置交換)したいんですが ググってもあんまりなかったです。 一応、java.util.regex.*; 使ってます。
348 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:41:41 ] "one two three four five" "one four three two five" 1 2 3 4 5 1 4 3 2 5 でした。
349 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:36:35 ] Pattern pattern = Pattern.compile("^(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)$"); Matcher matcher = pattern.matcher("one two three four five"); String str = matcher.replaceFirst("$1 $4 $3 $2 $5"); とりあえず
350 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 17:42:18 ] >>349 おお、ありがとうございます。 java.util.regex.Pattern; のAPI見ても \1 は載っていても、$1 は載ってなかったんですができるんですね。 ところでAPI(java, perl, ruby, js)見ても良く分かり辛いのですが、\n, $n のnはいくつまで参照できるんでしょうか。 nは10進表記みたいですけど、 \0 - 1から9までは dec \1 ... \9 - dec \10, \11 ... \21 - oct \010, \011 ... \025 \0nnn とすれば自動で8進表記 \nnnn とすれば自動で10進表記 参照は \1 <=> $1 API(java)ではこういう感じみたいなんですけど実際はどうなんでしょうか。
351 名前:デフォルトの名無しさん [2008/01/10(木) 21:27:54 ] "\1" じゃなく、"\\1" じゃないのかな。 java コンパイル ⇒ 正規表現コンパイル つまり2回コンパイルされる事に注意。 ここらへんの理屈がわかってないとツライよ。
352 名前:349 mailto:sage [2008/01/11(金) 00:55:38 ] >>350 とりあえず最大数は気にしなくていい、[\$]1000とかでもいけるように見える Petternクラスでは0始まりは8進数になるけど、Matcherクラスでは10進のまま PetternのescapeとMatcherのappendReplacementあたりのソースを見るといい うまくまとめられてないけど、2ch止まるらしいので今のうちに書いとく
353 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 17:24:33 ] APIソース見てるんですか! そこまで頑張らなくてもどこかにあるJavaのフォーラムで質問した方がいいんじゃないですか?
354 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 17:39:56 ] 質問者よりも回答者の方が問題解決に躍起になってるスレ。
355 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:10:07 ] sedを使ってC言語のコメントを全て削除するにはどうやればいいんですか? コメントが1行に収まっているなら簡単なんだけど、複数行にまたがる場合にどうすればいいかわからない
356 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:22:05 ] >>355 パターンスペースとホールドスペースを駆使すればできなくはないが、お勧めできない。 awkかperl、或いは最近のスクリプト言語を使う方がいい。
357 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 08:24:05 ] 俺には無理ぽ --------------------------------------- # decom.sed /\/\*/ { :loop /\*\// { b break } N b loop :break s/\n/ /g s/\/\*.*\*\///g } ---------------------------------------
358 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 08:30:01 ] ttp://main.rtfiber.com.tw/~changyj/sed/html/p.20010226b.html ちょろっと探したらすぐ見つかったしorz
359 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:21:03 ] でも>358だと文字列中の/*にも反応しちゃうんだよね。 本格的に使うのは、ちょっと無理。
360 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:51:59 ] プリプロセッサ指令をプリプロセスで消されないよう加工 ↓ プリプロセッサにかける ↓ 加工したプリプロセッサ指令を元に戻す
361 名前:デフォルトの名無しさん [2008/01/14(月) 12:03:15 ] 正規表現のエスケープしなくてもいい記号がわからないので、 とにかく記号という記号はエスケープしていて結構カオスになっているのですが、 エスケープしなくてもいい記号一覧とかどっかにありませんか? !"#$%&'()-=^~\|@`[{;+:*]},<.>/?_ これが \!\"\#\$\%\&\'\(\)\-\=\^\~\\\|\@\`\[\{\;\+\:\*\]\}\,\<\.\>\/\?\_ こんな感じに・・・
362 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:22:13 ] 半角スペースって普通に半角スペースをいれるか\x20とかくかどっちがいいんですか?
363 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:23:19 ] 普通に半角スペースを
364 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:40:39 ] >>363 レスありがとう。 普通に半角スペース使うことにしますね。
365 名前:361 mailto:sage [2008/01/14(月) 15:43:29 ] 完全かどうかはわかりませんがWikipediaにのってました。 というわけで自己解決しました。
366 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:31:15 ] >362 \s
367 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:36:27 ] >>366 秀丸じゃ使えないんだよな
368 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:37:44 ] >>366 つーか、それホワイトスペース一般じゃないか?
369 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:55:23 ] ホワイトベースに見えた
370 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:43:17 ] セイラさんにハァハァしすぎw
371 名前:デフォルトの名無しさん [2008/01/14(月) 20:00:29 ] \s は改行にもマッチすることがあるから 半角スペースの代わりにはならないよ
372 名前:デフォルトの名無しさん [2008/01/14(月) 22:22:22 ] 特定の英単語が含まれているかをチェックする正規表現を教えてください。 This is a pen. に対してhisをチェックした場合に引っかからないのが正しいです。 英単語の定義は[A-Za-z]{3,}とする予定で、単語の間はカンマやハイフン、セミコロンなどもあり。 前後が[^A-Za-z]だけだと行頭行末がダメ。。。
373 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:23:48 ] >>372 \b
374 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:28:09 ] 非語境界ってやつだな。
375 名前:372 mailto:sage [2008/01/14(月) 22:28:22 ] >>373 ありがとう。知らんかった。首吊ってくるわ。。。
376 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:41:54 ] イ`
377 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:44:30 ] \sはタブにもマッチするな まあ既に>>368 が言ってるけど
378 名前:デフォルトの名無しさん [2008/01/17(木) 16:41:25 ] こんにちは。質問です。 @book{sagan:1954, author = {Fran\c{c}ois Sagan}, title = {Bonjour Tristesse} } こんな感じの文字列(BibTeX)を取り込んでハッシュにするためには どのような正規表現を用いればよいでしょうか。 ポイントは 1. コンマで分割する。 2. {}の中のコンマは無視する。 というあたりだと思うのですが、特に括弧の入れ子をどう処理するかで困っています。 使用言語はRubyです。よろしくお願いします。
379 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:22:45 ] 正規表現は再帰をあつかえない。即ち括弧の対応を確かめることが出来ない。 上限をハードコードするなら可能ではあるが、普通にパーサを書いたほうがいいと思う。
380 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:31:48 ] 新しいPerlへようこそ
381 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 13:21:50 ] >>380 新しい Perl でも、正規表現 *だけ* では無理じゃね?
382 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:34:46 ] ソースコードやXMLはネスト構造を持つから正規表現は向かないよな。 Javaとかもソースコードパーサー用の汎用クラスがあるけど、何故か使われなかったり。 BNF法の知識がデベロッパレベルで浸透してないから、無理も無いけど。
383 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 09:57:54 ] 仕用言語はPHP5.2.4です。UTF-8での運用をしております。 テキストの中のURLをリンクしたいのですが、 $pat = "(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)"; $rep = "<a href=\"\\1\" target=\"_blank\">\\1</a>"; $body = ereg_replace($pat, $rep ,$body); これだと、2ちゃんねるみたく、ttp:から始まったURLの場合リンクできません。 無駄だと思いつつも書き方がわからないので、下記の処理を付け加えましたが、 <a href="hoge">hoge</a> ↑この部分が何故か文字化けしてしまいます。 $pat2 = "[^h](ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)"; $rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>"; $body = ereg_replace($pat2, $rep2 ,$body); スマートに書く方法を教えてください。
384 名前:デフォルトの名無しさん [2008/01/24(木) 10:34:25 ] すまない ageさして下さい
385 名前:デフォルトの名無しさん [2008/01/24(木) 10:51:13 ] >>383 [^h] じゃなくて h? じゃない?
386 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:20:57 ] >>385 dです ご指摘のように $pat2 = "h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)"; $rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>"; $body = ereg_replace($pat2, $rep2 ,$body); こうすることで動きました ありがとうございました
387 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:34:41 ] h?っていらなくない?
388 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:46:58 ] http: ってちゃんと書いたときに h が増殖しちゃわない?
389 名前:388 mailto:sage [2008/01/24(木) 14:51:28 ] スマソ、勘違い。 h? を省くと、 http: ってちゃんと書いたときに、こんなふうに h が出てきちゃう。 h<a href="hoge ">ttp://hoge</a>
390 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:19:55 ] 全体を括弧でくくってそれをテキストに指定、 内側のh?(~~をリンクに指定すればいいと思う。
391 名前:デフォルトの名無しさん [2008/01/24(木) 21:49:52 ] $test = '<a href="localhost/ ">LINK29</a>'; $test = preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}' ,page_href('$1') ,$text); 上記の正規表現で得た29という数字をpage_hrefという関数に渡したいです。 29という数字は取れているみたいですが、関数内には29という数字が渡ってきておりません。 preg_replace内でどうすれば関数に数字を渡せますか? ちなみにPHP5系です。
392 名前:デフォルトの名無しさん [2008/01/24(木) 21:52:25 ] preg_replace内の$textは$testです すみませんでした
393 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:30:33 ] >>390 kwsk
394 名前:デフォルトの名無しさん [2008/01/24(木) 23:58:17 ] >>393 $pat2 = "(h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+))"; $rep2 = "<a href=\"h\\2\" target=\"_blank\">\\1</a>"; $body = ereg_replace($pat2, $rep2 ,$body); ↑こういうことじゃね?
395 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:14:49 ] >>391 そのくらいの正規表現ならPHP使いなら大抵知ってるからPHPスレでいいと思うよ で、関数に引数を渡すにはその引数を評価してからじゃないと渡せない というわけでまずは preg_replace() の引数である page_href('$1') を評価する でもこの時点で preg_replace() は評価されてないので $1 は未定義 preg_match() を使って二つに分けて書くのが普通だろうけど どうしても preg_replace() ひとつで済ませたい場合は e 修飾子を使ってこう書く $test = '<a href="localhost/ ">LINK29</a>'; print preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}e', 'page_href($1)', $test); ただこういう謎コード書いて冷たい目で見られても知らない
396 名前:デフォルトの名無しさん [2008/01/27(日) 10:16:29 ] BREGEXPのC言語のラッパーライブラリがあったら教えてください。 BREGEXPでなくても他に使いやすいライブラリがあれば教えてください。
397 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:14:06 ] C 言語なら PCRE とか鬼車で良いのではないかと。
398 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:52:37 ] >>396 元々Cだしなぁ。ラッパーに何を期待してる? それはそれとして、素のBREGEXPは古いのでやめておいた方がいい。 いくつかバグも見つかっているようだし。せめてbregonigにすべきかと。
399 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:55:52 ] RE *re = ReCompile("/(\d+)/"); if(ReMatch(re, s)) { printf("%s", re->d1); } ReFree(re); これくらい簡単なのは確かに欲しい。
400 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:22:16 ] みんながCのアプリをC++でコンパイル通してくれればfreeもなしで if (/([0-9]+)/ == str) ... こうできるけどね。 クラス定義とかしなくていいからさぁ、 C++のランタイムにしてくればモジュール提供する側がラクなんだよなぁ
401 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:22:38 ] 世の中の全てプログラム言語はC++でいいと?
402 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:37:07 ] C99
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 ] あ、あれ・・・ もう一回調べてみたらピリオドのほうが先に来てる・・・
504 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:09:17 ] >>503 あー、すまん、書き間違えてたので修正しといた。
505 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:16:00 ] ってのは冗談として、 そういう ASCII コード表の順に大きく依存するような範囲指定を書くのは良くないと思う。 バグってハマったときに ASCII コードを凝視しないと解決いけなくなるし、移植性も低くなる。 アルファベットと記号は分けて書くようにするとか、文字クラスなどを利用した方が良い。
506 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:26:03 ] >>505 言うことは非常によくわかる。 文字クラスを使うべきっていうのには完全に同意。 でもASCIIコード順は移植性十分にある気がする。 とりあえず俺はASCIIコードで範囲指定するのは問題ないと思う。
507 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:49:22 ] 個人的には OSの事情とかLOCALEまわりのランタイムの完成度とか POSIX文字クラスは警戒心をくすぐるものだw
508 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:07:43 ] こんばんは! はじめましてよろしくです^^ キーワード@とキーワードAを同時にグレッペ出来る機能のあるツールはありますか 1000ファイル単位で処理したいんですが 1ファイルに@AA(Aは同じものが連続である) これを行ごとgrepしたいんです Aについては1つ削除がいいです よろしくお願い致します キーワード@東京都 キーワードA性別A(性別マーク)
509 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:25:18 ] 日本語でおk
510 名前:デフォルトの名無しさん [2008/03/13(木) 03:23:27 ] 3回読んだが意味わからん
511 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 03:30:34 ] なんとなくわかった気がしたけど最後の1行でぶちこわされた
512 名前:デフォルトの名無しさん [2008/03/13(木) 07:22:30 ] グレッペ
513 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 07:40:30 ] こんばんは迄呼んだ。
514 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 08:09:40 ] グレッペのあたりで断念した
515 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:04:25 ] デフォルトのまで読んだ
516 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:11:02 ] 1ファイルに3つのキーワードが先頭から 都道府県名 性別 性別を表す何らかのマーク の順番で並んでいて、 2つめと3つめは同じ性別を意味する別表現である。 例えば2つめが「男」だったら、3つめは「♂」となる。 これをgrepしたいが、性別については一つ消したい。 こんな感じか? grepだけじゃ無理だからsedかawk使え、でおk?
517 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:48:33 ] わろた
518 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:54:59 ] 縦読みだろJK こはキ11こAよキ ここで、前半部分の"こはキ11こ"というのは、 個数は11個じゃないよ、というのを表している。 個は、!=11個、というわけだな。 後半部分の"Aよキ"というのは、 2個でもねーよ、というのを表している。 (2個 !=)という逆ポーランド記法を使っているようだ。 つまり、個数は11個でも2個でもないということだったんだよ!!! Ω ΩΩ<な、なんだってー!!!
519 名前:デフォルトの名無しさん [2008/03/13(木) 16:15:05 ] Perlで>>1 のようにアンカー機能をつけるためには正規表現を学べばいいと聞きました if ($FORM{'text'} =~/>>$d/) こんな感じでアンカーを抜き出すのは合ってるのでしょうか? そのあと$DATA[$d]てきなのを取り出すにはどうしたらいいのでしょうか?
520 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:26:58 ] >>519 ハェ?誰に聞いたんだ?言った奴に質問してこい
521 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 20:34:26 ] $FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms 思いついたやつを貼ってみる こんなんだっけ?perlうろ覚えだわ
522 名前:デフォルトの名無しさん [2008/03/13(木) 21:25:39 ] >>521 うまくリンクされません。。 $FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms ↑これは桁数が1〜4ならマッチということですよね リンクされないのはなぜでしょうか?
523 名前:デフォルトの名無しさん [2008/03/13(木) 21:30:52 ] すいません 自己解決しました $val =~ s/</</g; $val =~ s/>/>/g; これでタグを無効にしていました それで>>521 さんの通りにやるとアンカー自体はマッチします この後それを取り出すのはどのようにすればいいのでしょうか? ログからデータを取得するのはわかりますが、実際にその取り出された部分だけを抽出して表示するやり方がいまいちわかりません
524 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:35:50 ] webprog池
525 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:58:16 ] >>508 やったな、おい!大漁じゃねーか!
526 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 07:20:33 ] なんだい今更になって 本人乙とでも言ってほしいのか?
527 名前:デフォルトの名無しさん [2008/03/14(金) 18:46:06 ] >>523
528 名前:デフォルトの名無しさん mailto:age [2008/03/14(金) 21:06:23 ] 「楽しいかもね、そうかもね」っていう文字列で 「楽.*ね」ってやると、.*は可能な限りマッチするから 「楽しいかもね、そうかもね」まで拾っちゃうでしょ? それを「楽しいかもね」でマッチさせたい場合どうすればいいですか?
529 名前:デフォルトの名無しさん [2008/03/14(金) 21:08:42 ] *?って?をつければ非欲張り型(なるべく短くマッチ)になるかも知れない
530 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:08:49 ] >>528 まずは>>1 を音読したまえ
531 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:09:35 ] 楽.*?ね
532 名前:デフォルトの名無しさん mailto:age [2008/03/14(金) 21:12:11 ] .*? でした。
533 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:19:58 ] 60文字程のURLなんだけど 真ん中あたりの15文字くらいがわかんなくなりました 正規表現でなんとかなりませんか?
534 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:27:42 ] その15文字の前か後ろの長いほうで検索すればいいだろ…
535 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 10:57:56 ] >>528 楽[^、]*ね
536 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:05:59 ] >>535 それが許されるなら 楽しいね だって許されるはずだ
537 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:47:45 ] 楽しい、ね
538 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:48:14 ] 楽しいかもね楽かもね
539 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:28:52 ] >>535 だったら 楽[^ね]*ね でもいい様な。
540 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:53:11 ] ワード協会とか除外すればいいのどは
541 名前:デフォルトの名無しさん [2008/03/15(土) 22:03:46 ] 安楽死ね
542 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 00:57:08 ] 「楽しいかもね、そうかもねABC」っていう文字列で 「ね.*$」ってやると 「ね、そうかもねABC」まで拾っちゃうでしょ? それを最後の「ねABC」でマッチさせたい場合どうすればいいですか?
543 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:59:00 ] ね.*?$ だと何度言えば
544 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 01:02:19 ] >>543 マジで?できないけど??
545 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:04:58 ] [^ね]を使うとか、いろいろやりようはある
546 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:08:49 ] >>544 最短一致に対応してないタイプの正規表現なのかな。
547 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:16:55 ] >>543 ,546 その目的には、最短一致は使えないから。 照合開始位置を後ろにずらしてまで最短を見つけるわけではない。
548 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:21:20 ] ああ、そうなんだ。
549 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 01:34:22 ] さあ、この問題を解決できる神はいるのだろうかっ!!(ただ答えが欲しいだけ)
550 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:35:49 ] ね[^ね]*$ じゃないのか?
551 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:50:55 ] それもう545で提案されてんじゃん。
552 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 02:24:31 ] >>550 THX!ひとまずそれで省いた後 ね$をマッチさせることにするよ
553 名前:492 mailto:sage [2008/03/16(日) 03:14:37 ] やはり戻り読みが使えないと難しいですか?
554 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 03:24:12 ] 戻り読みはいらんだろ
555 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:10:58 ] Vimで 2008年3月16日 06:09:42 ↓ 2008-03-16 06:09:42 のように年月を-で、日を削除するように置換するにはどうしたらいですかね?
556 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:25:49 ] :%s/年/-/ :%s/月/-/ :%s/日// じゃあかんのんか? というか、3 を 03 に変える所までやりたいの?
557 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:31:06 ] >>556 説明不足ですみません、対象のテキストには日付以外にもいろいろ書かれていて、 年や月などの単語はそのままに日付部分だけ置換したいのです。 日付の正規表現が理解できていないので、こちらでお尋ねした次第です。 >というか、3 を 03 に変える所までやりたいの? 可能ならしたいです。
558 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:04:36 ] とりあえずこれでいけた。 :.s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\=system("printf '%04d-%02d-%02d' " . submatch(1) . " " . submatch(2) . " " . submatch(3))/
559 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:09:55 ] しまった。 テスト用に1行のみの置換にしてた。 :.s は :%s に変えてね。 まあ分かると思うけど。
560 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:45:51 ] >>558 さん、ありがとうございます。 やってみたのですが、うまくいかず、日付の部分が丸ごと消えてしまうようです。 'printf' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出ました。こちらのVimの設定が悪いのでしょうか?もう少し試してまたレス返しにきます。
561 名前:>>555=>>557 mailto:sage [2008/03/16(日) 08:05:26 ] 何度か試したのですが、同じ結果です。 一応こちらの手順ですが、スレに貼って頂いたものをクリップボードに入れてから、 :<C-R>* で貼り付けして、先頭を :%s/ に変えてテキスト全体に適用してから、実行しました。ほぼコピペなので打ち間違いはないと思うのですが。 Vim7 を Windows 2000 sp4 で使ってます。 printf などもわからないため、もう少し調べてみます。
562 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:10:00 ] >>555 ViVi でだけど以下でいけた :s/(\d{4})年(\d{1,2})月(\d{1,2})日 (\d{2}):(\d{2}):(\d{2})/\1-\2-\3 \4:\5:\6 Vim でも同じように出来るんじゃないか?
563 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:45:32 ] >>562 さん、やってみましたが無理でした。 マッチはうまくいってるみたいですが、置換の仕方がVimとだいぶ違うようです。 ViViはいじったことないので、少し調べてみます、スペース入れる辺りがよくわかりませんので。 わざわざありがとうございました。皆さん、お手数おかけしております。
564 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:03:58 ] お二人のご教示をヒントにいろいろいじっていたら、以下で、 %s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\1-\2-\3/g 2008年3月16日 06:09:42 ↓ 2008-3-16 06:09:42 のように、桁数が1桁のままですが、それ以外は置換できました。もう少し試行錯誤してみます。
565 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:29:58 ] 月などを2桁にしたいのなら、ViViだと以下のようにすればいい :s/(\d{1,4})年(\d{1,2})月(\d{1,2})日 (\d{1,2}):(\d{1,2}):(\d{1,2})/format("%04d-%02d-%02d %02d:%02d:%02d", $1,$2,$3,$4,$5,$6)/e
566 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 16:54:21 ] >>560 >>558 は printf コマンドがあることを前提にしてるから Windows のコマンドプロンプトだと無理なんだろう。 Cygwin でやればいけるはず。
567 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 17:51:53 ] >>565 さん、ViViを使って、教えていただいた正規表現でできました。 いろいろVimで粘ったのですが自分のスキルでは無理だったので。 ありがとうございました。 >>566 さん、ご教示ありがとうございます。 Cygwinはよくわからないのと、>>565 さんの方法で出来たので printfコマンドはあきらめました。 >>555 の質問の件は>>565 さんので解決することができました。 皆さん、いろいろ教えていただきありがとうございました。お世話になりました。
568 名前:デフォルトの名無しさん [2008/03/16(日) 19:50:39 ] あまりの丁寧なレスに 全米が泣いた
569 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 14:41:31 ] 初心者です、それなりに調べたんですが・・ あああああああ aaaaaaaaa ?????????? 乙乙乙乙乙乙乙乙乙乙乙乙 こういうある文字の繰り返しを、一つの表現でマッチできますか?たとえば10文字以上 専ブラで弾きたいんですが、数字はのぞけると嬉しいです
570 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 14:44:54 ] [^\d]{10,}
571 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 14:45:26 ] "正規表現 後方参照"でググれ
572 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:39:30 ] 任意の一文字って . ドットのことでおききしたいんですけど 探したい文字の前につけるんですよね? < を探すのに .< として検索したら結果は >< として検索されます 検索結果に > を含めない方法教えて下さい
573 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:00:47 ] >探したい文字の前につけるんですよね? 新しい解釈だな
574 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:07:48 ] 久しぶりに理解不能なの読んだな 「>」でない任意の1文字 + 「<」 と一致させたいってことなら [^>]< 検索結果から>だけ取り出したいってなら.(>) 後者に何の意味があるのかは知らないけど ただ少なくとも正規表現について基礎から勉強しなおしたほうがよさそうだな
575 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:15:14 ] むしろ日本語について基礎から勉強しなおしたほうがよさそうだな
576 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:38:21 ] 最近も508が理解不能だったぞ
577 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:04:03 ] 読み直して 吹いた>>508
578 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:12:36 ] >>514 が秀逸
579 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 02:36:39 ] >>577 あれからダブルグレッペというマクロをつかわせていたらきましたよw 一応テストしてから本格的に使わせていただこうと HDDの奥深くにテスト用のテキスト置いて、 grep開始! ほへ? グアッガッガーッ!!うわぁぁああああ!!! この音は何?? なんだろか!? ハードディスクが唸りまくってるタラリーン よくわからないけどドライブごとgrepしてくれたよ 1ファイルで5000行〜1万行が40万ファイルあるのに・・・(ポカーン コントロール+オルト+デリートでストップかけたら エディター画面の後ろ側にエラー画面がいくつもでてたww 今時ブラクラ?? 驚いたというかワラタwww
580 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:44:41 ] 使用するソフトはProximitronです。 以下のような広告を含む<table>ブロックを丸ごと削除したいと考えています。 <table width=100% class=tbl border=1 cellpadding=5> <tr bgcolor=#EEEEEE><td height=5px></td></tr> <tr> <td align=center> <iframe id='a5c37d59' name='a5c37d59' src='ads.xxx.com/xxx/afr.php?n=a5c37d59&zoneid=2&cb=<?=41Q40eQDW2vfp6o;?> ' framespacing='0' frameborder='no' scrolling='no' width='300' height='250'> <a href='ads.xxx.com/xxxxxx/ck.php?n=adf3ef1c&cb=<?=41Q40eQDW2vfp6o;?> ' target='_blank'> <img src='ads.xxx.com/xxx/avw.php?zoneid=2&cb=<?=41Q40eQDW2vfp6o;?>&n=adf3ef1c ' border='0' alt='' /></a> </iframe> <script type='text/javascript' src='ads.xxx.com/xxx/ag.php '></script></td></tr><tr bgcolor=#EEEEEE><td height=5px></td> </tr> </table> 一部伏字にして置換してあるので100%同じ文字列ではありません。 これをマッチさせて丸ごと削除したいのです。 <table.*>.*</table> これだとページ自体が全体的に崩れてしまいます。 tableの開始と終了を合わせないといけないのですが そこがネックになっています。
581 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:43:48 ] >>580 正規表現スレだからこんな書き方をするとスレ違いかも知れないけど、 $NEST(<table,[^>]++class=$AV(tbl)[^>]+>*,</table>) 「*」の所を、「*消したい文字を入れる*」とか、すればいいんじゃないかな。
582 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 02:57:04 ] 拡張子のないファイルに.txt付けたいです aa1234ファイル [0-9] $[\.(txt)] だめですか?
583 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:02:31 ] >>582 >>1
584 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:12:15 ] + が使えるなら s/^\([^.]+\)$/\1.txt/ + が使えないなら s/^\([^.][^.]*\)$/\1.txt/
585 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 04:16:02 ] >>583 了解 >>584 ありがとうございます
586 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:58:56 ] (Perl5互換)のツールで半角括弧を削除したいんですよろしくお願いします 元の文字列 (10123)test.txt 希望する変換後の文字列 10123test.txt 使ってみたいツールはこれです ベクター Flexible Renamer ttp://hp.vector.co.jp/authors/VA014830/FlexRena/ このスレの>>1 関連サイトを廻ってみたけどよくわかりませんでした ツールの作者HPもいって見ましたがQ&Aとか掲示板はなかったです どなたか括弧の取り除き方教えて下さいお願いします
587 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:28:15 ] ( 削除 ) 削除
588 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:03:04 ] 正規表現教えて下さい <h2>タイトル</2> 「<」から「>」までお願いします(「タイトル」の文字列含む) どなたかよろしくお願いします
589 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:06:50 ] >>1
590 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:15:46 ] >>588 です 書き込んでから>>1 読みました 今のところ使うソフトは秀丸エディターを試用しようしてみよう思いますが ツールは何も揃えていない状態なので解答者サンのお勧めのソフトで始めてみます 正規表現でテキストの加工をしたいです 初心者でも挫折しないで継続して使っていけるソフトも一緒に探してます 金額にもよりますがフリー有料問いません 使うソフトはまだ明確には決めていませんので取り合えずシェアーウェアーで試してから 本格的にやってみようと思います <h2>タイトル</h2> よろしくお願いします
591 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:18:55 ] <h2>///ここは<strong>見出し</strong>です///</h2> こんなのは想定しなくていいのか。
592 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:26:26 ] >>591 サン 即レスありがとうございます そういうのもあるかもしれないです 文字列の中に <strong>見出し</strong> が入っていれば検索文字列も変わりますよねorz <h2>からエンドを</h2>にする方法教えて下さい お願いします
593 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:27:33 ] 途中に改行は?
594 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:53:20 ] >>593 サン 588です 途中に改行は想定していなかったです あるかもわからないと今気づきました お手数お掛けして恐縮ですが何卒よろしくお願い致します
595 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:10:25 ] おまいら、よく>>588 の文章で、その意図が判ったな。
596 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:37:54 ] <h2>///ここは<h2><strong>見出し</strong></h2>です///</h2> こんなのは想定しなくていいのか。
597 名前:デフォルトの名無しさん [2008/03/24(月) 23:43:26 ] 結局、正規表現は入れ子は処理できないのでは
598 名前:デフォルトの名無しさん [2008/03/24(月) 23:46:46 ] <h2> (.*) </2> \1 <h2> ([.\n]*) </2> \1 とかでいいのでは?
599 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:47:39 ] なるほどね 過去スレ読めばよかったorz >>33 まで読んだ
600 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:52:05 ] >>595 がここに張り付いてるようじゃ このスレで勉強させてもらおうって人も尻込みするね >>595 の意図はそれなんだろうけど・・・
601 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:54:45 ] ライオンはなんとかって話なわけで 潰しにかかれるうちに潰しちゃう やな奴だ氏ねばいいよ 9図
602 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:58:48 ] - - - こ こ へ 何 か 聞 き に 来 た 人 へ - - - ま ず 過 去 ス レ 読 ん だ ほ う が い い 変 な 潰 し 屋 が い て る よ う な の で ご 注 意 下 さ い
603 名前:デフォルトの名無しさん [2008/03/25(火) 00:18:28 ] 質問です。 正規表現だと、〜〜を含む行を探すってのは簡単にできるんだけど 〜〜を含まない行を探すのはどうするのが一般的なのでしょうか? エディタならば、「abcde」を含む行を ^((.*)abcde(.*))\r\n で探して、削除することで処理できるのですが、 これはあくまで含む行を探してるのであって、 含まない行を探すというのとは違うような気がして釈然としません。 別に今困ってるわけじゃなくて、知っておきたいだけなのですけど・・・。 よろしくお願いします。
604 名前:デフォルトの名無しさん [2008/03/25(火) 00:24:37 ] うあ、>>473 ですでにあった。
605 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 00:25:12 ] >>603 言語理論での定義では、正規表現は「ある文字列を含まない文字列」はあらわせない。 しかしそれでは不便なので、パターンマッチ用に拡張された言語では否定を表現する方法を持っている場合はある。
606 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:48:25 ] sage を含まない文字列 ^(?!sage)(.(?!sage))*$
607 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:06:14 ] >>603 ^([^a]|a([^b]|b([^c]|c([^d]|d([^e]|$)|$)|$)|$)|$)*
608 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 08:13:09 ] >>603 vi, vim, ViVi なら :v/regexp/d で正規表現に一致しない行を削除できる
609 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:28:43 ] <h2 title="></h2>">みだし</h2> こんな記述も可能ではある。 結論: HTMLのパースに正規表現は向かない
610 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:40:43 ] java1.4ですが、 1234567890 を 1234______ にリプレイスしたいのですが、 どうすればできるでしょうか?
611 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:44:44 ] "1234567890".replaceAll("[567890]", "_")
612 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:45:35 ] "1234567890".replaceAll("[5-90]", "_")
613 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:55:11 ] 「違うんです。 987654 なら 9876__ 314159265358979 なら 3141____________ にしたいんです」 かな。
614 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 14:02:37 ] >>610 自己レスですが、いろんなサイトを見よう見まねで + 気合で何とかできました。 "1234567890".replaceAll( "(^....|).+?(?=.+|$)" , "$1_")
615 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:25:13 ] 「任意の一文字」の.や「前にある文字の1回以上」の+は、bashだとそれぞれ?と*ですが、 正規表現は規格で決まってるものではないんでしょうか? 言語ごとに違いってあるんでしょうか?(bashは言語じゃないってのもありますが・・・)
616 名前:615 mailto:sage [2008/03/25(火) 20:27:21 ] 「前にある文字の1回以上」の+ ↑は違いましたね・・・失礼しました。
617 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:28:54 ] >bashだとそれぞれ?と* それ性器表現じゃないし
618 名前:615 mailto:sage [2008/03/25(火) 20:49:04 ] >>617 bashのは正規表現とは言わないんですか、失礼しました。そう呼んでるサイトも見かけますが・・・ bashの*に対応するのは.*ですね。 bashスクリプトとperlスクリプトが混ざってると、ちょっと紛らわしいですね
619 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:05:10 ] bash のは言うならワイルドカードだな。
620 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:49:44 ] grepとglobの違い。
621 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:33:07 ] えっ?どう違うの?
622 名前:デフォルトの名無しさん [2008/03/27(木) 13:47:15 ] えっと・・・ VBS (WSH Windows Scripting Host) のRegExp では マルチラインの指定はできんですか? ググって必死こいて探してるけど見つけられないんで。
623 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:56:06 ] かなり前のバージョンでサポートされた Set ObjRegExp = New RegExp ObjRegExp.Multiline = True
624 名前:デフォルトの名無しさん [2008/03/27(木) 22:10:38 ] >>623 できました。アリガトです。
625 名前:デフォルトの名無しさん [2008/03/29(土) 17:03:54 ] 「ます」「ただいま」 という二つの単語がある場合で 上記2つにはマッチするが たとえば「まる」という言葉にはマッチしないようにする 正規表現ってどうやればいいですか? 今は「ます」と「ただいま」の2語をマッチするようにしているのですが、 やり方が悪いのか「まる」という言葉でもマッチしてしまいます。
626 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:12:13 ] >今は「ます」と「ただいま」の2語をマッチするようにしている 具体的にはどうしているの?
627 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:15:05 ] (ます)|(ただいま) どう間違えると「まる」にマッチするのか知りたい。
628 名前:625 [2008/03/29(土) 18:03:22 ] ()なんてあったのか! 解決しました!ありがとうございます。
629 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:12:12 ] どうやっていて (ます|ただいま) にマッチさせたいのに まる に マッチしてたのかという謎を解決して欲しいです。
630 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:43:26 ] >>627 そんな書き方があるとは知らなかった どの正規表現実装か教えてくれ
631 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 21:09:51 ] Firefox2.0.0.13の拡張機能Adblock Plus 0.7.5.3でフィルタを登録しています。 /[\W_]ad(?!=&)(banner|click|conmatch|eeper|flow|frame|ima?ge?|log|serv(er|e)?|stream|type|view|vert(ising|isement)?|trix|xchange|wrapper)?s?[\W\d_]/ これが↓にもヒットしてしまい表示されなくて困ってます。 ttp://navi.ekitan.com/ppnavi/Dr?PC=&uid=&dir=22&path=2008032920482250400&flati=12485742&flong=48790567&fland=%E5%A4%A7%E9%98%AA%E5%BA%9C%E5%A4%A7%E9%98%AA%E5%B8%82%E4%B8%AD%E5%A4%AE%E5%8C%BA%E5%A4%A7%E9%98%AA%E5%9F%8E1-1&ftell=&sf=10900 デコードすると、 ttp://navi.ekitan.com/ppnavi/Dr?PC=&uid=&dir=22&path=2008032920482250400&flati=12485742&flong=48790567&fland=大阪府大阪市中央区大阪城1-1&ftell=&sf=10900 よく分らないのですが、"中"の%E4%B8%ADに当たってるようです。 一番よく使ってるフィルタなので消したくないです。 このフィルタで"中"にはヒットしないような正規表現は可能ですか?
632 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 21:55:14 ] /[^%A-Za-z0-9]
633 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 07:49:32 ] 一番外側の開始文字〜終了文字までを マッチさせるようなのは正規表現でいけません? 開始終了を括弧としたら "(((1 + 2) * 3) - 4) / 5" の時 "(((1 + 2) * 3) - 4)" ここまで取れない? 括弧見づらいからブレイスにするけど /{([^{}]*|{[^{}]*})*}/ だと2段までしかとれないのは何故?
634 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 08:00:38 ] /{([^{}]*|{([^{}]*|{[^{}]*})})*}/ こうすれば3段までマッチさせられるよ。
635 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 09:04:26 ] 普通に最長一致させてやりゃいいんでないの? (1+2)*3)-4 みたいな構文が来たら困るけど
636 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 12:27:53 ] 質問ですperl5.8です <aaa bbb ccc> ddddddddddddd<aaa> 検索:<aaa.*?>(.+?)<aaa> で検索したけどマッチしません。どなたかよろしくお願いします
637 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:22:02 ] >>636 .*? の部分かな。 <aaa[^>]*> でどうだろう。
638 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:20:12 ] >>636 対象が複数行なんだよね? $str = "<aaa bbb ccc>\nddddddddddddd<aaa>"; $str =~ s/<aaa.*?>(.+?)<aaa>/$1/s; # 後ろに s つける print $str;
639 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:22:45 ] 改行のせいだろJK (?s-:<aaa.*?>(.+?)<aaa>)
640 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:23:10 ] うわぁ、更新してなかったorz
641 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:23:59 ] みなさんレスありがとう>>636 です 上手くいかないです^^; もうちょっとガムバッテみます 複数行になると難しいですね 続いた行はできそうな気がするんだけどできないorz
642 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:43:52 ] while (<FH>) { /pattern/s; # 先生、何もマッチしません } if (@lines =~ /pattern/s) { # 先生、ここ通りません } どっちか知らないけど。
643 名前:デフォルトの名無しさん [2008/04/04(金) 20:06:53 ] " 11 11 " これにマッチあせて"11 11"を取得することはできますか? 「 *([^ ]*[.]*[^ ]*) *」 でやってみたのですがうまく取得できなくて・・・ スペースは全て全角です お願いします
644 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:22:00 ] >>643 途中の[.]*でぶっ飛んでる。つーか、. に [ ] つける意味がないよね。
645 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:30:34 ] >>644 じゃあ教えてあげればいいのに文句書くだけなら解答者じゃない荒らしだ どっか池 こんな感じか違うかw ".1+.*?"
646 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:35:40 ] スペースが全角って、もとの文字列がってこと? あと 11 と 11 は同じ文字? それなら +(([^ ]*) +\1) + かな。全角を認識させたいなら・・・環境によるなぁ。
647 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:01:59 ] perl5.8です 文字列を3行続けて取得したいのですが教えて下さい 【郵便】100-0001 【住所】東京都○○区○○町1-2-3 もしくは 神奈川県○○市○○町1-2-3○○○○○○○○マンション3階303号室 【電話】03-3000-XXXX 1行目、3行目は行頭にそれぞれ【郵便】【電話】がありますが 2行目の住所部分はマンション名が長かったりすると【住所】はなくて行頭が東京都や神奈川県から始まる行もあります 3行連続で取得する方法教えて下さい
648 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:18:25 ] 【郵便】[.\n]*?【電話】.*
649 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:26:17 ] >>647 pc11.2ch.net/test/read.cgi/php/1203935151/280 とか pc11.2ch.net/test/read.cgi/php/1204488452/42 とか >>636 辺りに心当たりはないか。
650 名前:デフォルトの名無しさん [2008/04/05(土) 00:02:46 ] >>646 「○11○5656○」 ○は全角スペースです 全角スペースに囲まれた文字列を取得したくて・・・ 11とか5656は任意の文字で 間に全角スペースが入っているかもしれないんです 上の文字列だったら「11○5656」 って感じで わかり難い書き方して申し訳ないです
651 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:10:43 ] >>650 言語は?
652 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:19:51 ] ○(.*)○ これで抽出できないかな?正規表現始めたばっかでよくわからないけど
653 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:20:47 ] ○*(.*)○* こうか、すまん
654 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:21:36 ] 基本的に正規表現は最長一致するから >>652 で問題ないんじゃない?
655 名前:デフォルトの名無しさん [2008/04/05(土) 00:27:45 ] test
656 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:28:02 ] >>650 言語と文字コードがないとあきまへんが、なんとかせーっちゅーなら、 (\xe3\x80\x80|\xa1\xa1|\x81@)(.*)(\xe3\x80\x80|\xa1\xa1|\x81@) これでいけますわ。utf-8,shift_jis,euc-jpなんでもこいのすぐれものや。
657 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:59:54 ] どうして正規表現はいつもいつも顔文字に見えてしまうんですか?
658 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 02:59:24 ] >>650 「○11○5656○」 これの1個目3個目の空白はマッチさせないんだよね 2個目の空白は実際にはあるかないかわからない 両隣は任意の文字 ん〜これピッタシあわせるのは今の情報だけでは難しいというより不可能じゃないでしょうか 任意の文字が半角だけの構成なら[0-9][a-z]簡単なんだけどなー 何か他にkeyに出来そうなのないですか? それとここで解答者が自分の環境でよい結果が出てもあなたの環境ではマッチしないかもしれない 環境に合った正規表現の使い方をしないとマッチさせれない場合がありますよ 質問者も解答者も徒労に終わるので あなたが正規表現をどのように使うのか記載したほうがいいよ 正規表現を扱おうとする言語もしくは正規表現を扱えるエディターで検索しようとしているのか あなたを攻めてるわけではないので誤解しないようにね
659 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 03:16:49 ] >>650 [^\x81@].*[^\x81@]
660 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 08:53:44 ] >>653 ああ、そうか。そうだな。
661 名前:650 [2008/04/05(土) 12:28:26 ] すみません戻りました 皆様レスありがとうございます 「○11○5656○」 ○は全角スペース、何個あるかわからないし、ないかもしれません 「一三○四○○○」だったら「一三○四」 「○○○○八九4○○た」だったら「八九4○○た」 こんな感じで取得したいです 他の文字は任意です。全角の場合が多いですが 言語はJava、コードはUnicodeかな? 簡単に言うと両端の全角スペースをトリムしたいだけなのですが・・・ わかり難い表現ですみません
662 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:35:01 ] 先頭の全角スペースを除去、末尾の全角スペースを除去 という処理にしたほうが簡単だよ 非欲張りなのが使えればこうかな / *(.*?) *$/
663 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:50:55 ] /^□*([^□]+(□+[^□]+)*)□*$/
664 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 03:05:23 ] gawk3.16です 2行に渡る文字列を検索でマッチさせたいです <title(.+?)\n.*title> 秀丸(正規表現ON)ではマッチしていたのですがgawkではマッチしません アドバイス頂けましたら幸いです どうぞよろしくお願い致します
665 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 03:14:35 ] mオプション可能な処理系を使うか、事前に加工しとくか。
666 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 04:08:57 ] >>665 さん mオプション マルチラインですね 実はgawkのスクリピトを教えていただいたのです とても気に入り今後末永く使わせていただこうと思うのですが 複数行の検索が秀丸と違うようなので戸惑っています 他にgawkのアドバイスありましたらよろしくお願いします
667 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 06:08:38 ] >666 相変わらず具体的じゃないのね。 665をやったがこういう風にうまくいかなかったとか こうしたけどダメだったとかあれば、アドバイスのしようもありますが、 他にアドバイスと言われてもなかなか。
668 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 08:58:29 ] >>666 ない物は仕方ない。 mオプションの正規表現を組み込んだawkを自前で作る? perlとか、正規表現が拡張されてる処理系に移った方が、後々幸せ。
669 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:26:21 ] gawk3.16で複数行にまたがる文字列をマッチさせたいです エイチティティピー://www.kt.rim.or.jp/~kbk/gawk/gawk_5.html#SEC28 上記アドレスのページに「複数行レコード」と記述がありました >変数FS に "\n"という文字列をセットすれば良い。 > (これは、改行にマッチする単純な正規表現である) わかる方おられましたら教えて下さい やってみたこと gawk.exe "FS = \n 検索文字列 プリントアウト"入力ファイル>出力ファイル エラー:^バックスラッシュが行最後の文字になっていません gawk.exe "FS = \n 検索プリントアウト"入力ファイル>出力ファイル^ エラー:More? gawk.exe "FS = \n 検索プリントアウト"入力ファイル>出力ファイル/ ファイル名、ディレクトリ名 またはボリュームラベルの構文が間違っています PS: 666です >>667 さん >>668 さん レスありがとうです
670 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:57:34 ] >>669 気付け。gawkじゃ無理。 FSはフィールドセパレータ。用途が全然違う。
671 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:00:36 ] そういうのはどうしてもawkでやりたければtrで改行文字を置換してからawkで処理して戻すとかやるからなぁ。 awkだけじゃなくて、基本的な知識が足りなすぎるよ。
672 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:04:12 ] >>669 です >>670 さん >>671 さん gawkは諦めた方がよいかもしれないですね 私じゃ無理だということはわかりました アドバイスありがとうございました^^;
673 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:01:44 ] <element attribute>マルチラインを キャプチャしたいんです</element> このお題はまだ続くのかな。 > perl5.8です > gawk3.16です 次は何だろ。
674 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 00:07:32 ] >>673 残念でした 秀丸 perl gawk ですよw 秀丸でもう少しのところまでいけたんだけど データが長すぎて最後のソートが出来なかったんだ それでエクセルとかでやろうとしたんだけど 文字化けで遠回りした 正規表現扱えないんだってわかるのに1週間かかったw んで改めてやってるんよ データ形式をちょっと変えて保存するだけなんだけど こんなに難しいとは思わなかった 秀丸スレの人たちとUWSCスレの人たちのお陰で ここまでなんとか前進できた いつも「もう少しだっ」って思っていたところへたどり着くまでに 思いもよらぬ壁が現れるんだ この正規表現もそうだね 私は正規表現って生まれて始めて知ったんだ またお願いしますね オヤシミ^^
675 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 03:18:20 ] >>674 Excelでも正規表現使えるよ。 CreateObject で正規表現オブジェクトを使えるようにすればね。 つか、Perlでできなかったてーのはなんでだ?
676 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 03:25:58 ] >>675 perlで出来そうなんだけど私が作れないだけ^^; オヤシミノシ
677 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:15:30 ] >>676 正規表現使うならperlじゃなくてもいいが何かプログラミング言語もやっといたほうが自由度はあがると思うけどな。 perlは何するにしても過去の遺産のおかげで楽ができるから趣味でやる分にはお勧め。
678 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:44:33 ] いくつかのスレで見かけたけど、大本のやりたいことは何なの? ウェブページをテキストで取り込んでデータベース可? なんだかやりたいことの過程で部分部分でこのソフトでこうするのはどうしたらいいか とういう質問でよく分からない。 で 紙copi/紙copi lite/Kamicopi/ネタの種 12 pc11.2ch.net/test/read.cgi/software/1201627570/ あたりのソフトを使えば良いんじゃないか?とか思っちゃうんですが、見当違いだったらごめんね。
679 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:46:44 ] >>678 紙コピ持ってるよ 最初はスゲーとか思ってシェア払って正規ユーザーなったけど 加工で正規表現検索できないので役に立たない ビジネスバージョンも抽選で当たったけど もう使ってないよ やりたいことは何十回も書いてるよ ここで書くのもなんなんだけど 既存のファイルからタイトルとデータ1箇所を抽出して一覧表作りたいだけ <ol> <li><a href="ファイル名">タイトル</a></li> <li>データ</li> </li>予備項目(空欄)</li> </ol> この前ファイル名とタイトルの部分を作ってくれた方が居たんだけど その下にデータ項目と予備項目を作らなければいけないことがわかって もっかい頼んだら後でコロコロ変わるってことで断られた それで自分でやってるわけ^^;
680 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:33:34 ] 素朴な疑問だが、「シェア払って」ってなに?
681 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:15:19 ] 「シェア払って」ですか 「お金払って」ですね
682 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 11:27:48 ] シェアウェアにシェアフィーをシェア、って早口言葉みたいだ。
683 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:20:21 ] Wiki(pedia)って感じだな。
684 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 10:39:52 ] 詳説 正規表現 第3版の訳本がやっと出るっぽいな 原書あるから要らんけど…
685 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:59:29 ] Perl5.8.2です。 「あかスまのた゚」「゙ナをフaき」のように、 規則性のない全角かな・カナ、半角かな・カナ(濁点半濁点含む)をマッチさせたいのですが 例えば上の例ですとどのようなパターンで記述すればいいでしょうか? 文字コードは何でも構いませんが、可能ならeuc-jpが良いです。 よろしくお願いします。
686 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:16:59 ] 半角英字が混じってるように見えるが、 それは排除しなくていいのか? Ruby なら EUC にして 0x00 〜 0x7F を排除すればいいだけだと思うが、 規則性の有無のチェックが必要とかなると正規表現では難しいかと。
687 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:20:26 ] あ、全角英字や漢字も除くというか、 本当に仮名のみにするのか。 仮名の範囲の端同士で [ヲ-゚ぁ-んァ-ミム-ヶ] みたいにすればいいと思うよ。 Ruby なら文字コード指定できるから、EUC でそうやればいい。
688 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:59:19 ] どうだい本当にそういうことか? 文字化けしてる領域をまるっと抽出したいってことだと思うんだが もしそうなら>>306 みたいに先読み使えばどうにかなると思う
689 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:19:19 ] ttp://www.oreilly.co.jp/books/9784873113593/ 第3版が出るようだけど,PHPイラネなら買うほどでもないのかな
690 名前:デフォルトの名無しさん [2008/04/12(土) 01:42:47 ] 性器にperlを埋め込みたいんですが、腕のいいクリニックをご存知ありませんか?
691 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:36:34 ] 埋め込むなら、perlではなくpearlをどうぞ。
692 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:25:33 ] さすがにRuby埋め込んでくれるところはないんでしょうか?
693 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 08:45:46 ] ないね Pythonなら最初から生えてるのにね
694 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:20:33 ] 朝になるとEiffelです。
695 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:18:06 ] 35の春。はじめての C 。
696 名前:デフォルトの名無しさん [2008/04/12(土) 22:01:15 ] haskell! haskell!
697 名前:デフォルトの名無しさん [2008/04/13(日) 14:15:30 ] 正規表現でパスワードのような文字列にマッチさせることは可能でしょうか? 条件 ・英字(大文字か小文字)と数字を必ず含む ・英字のみはマッチしない ・数字のみもマッチしない ^\w+$ はもちろん駄目で ^[a-zA-Z\d]+$ ももちろん駄目でした・・・
698 名前:デフォルトの名無しさん [2008/04/13(日) 15:36:33 ] これでどうですか? (\w+(\d*\w*)*|\d+(\w*\d*)*) _と-の扱いは?
699 名前:デフォルトの名無しさん [2008/04/13(日) 17:01:14 ] > _と-の扱いは? ああ、それもいるのか・・
700 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:07:31 ] 先読み使える言語なら、それで一発では?
701 名前:デフォルトの名無しさん [2008/04/13(日) 17:26:35 ] \d+(\d|\w|[-_])*\w+(\d|\w|[-_])*|\w+(\w|\d|[-_])*\d+(\d|\w|[-_])*|[-_](\d|\w|[-_])*\w+(\d|\w|[-_])*
702 名前:デフォルトの名無しさん [2008/04/13(日) 21:26:46 ] 教えて欲しいのですが、この /(?<=\{\s*)/ が perl に怒られるのはなぜでしょうか * をはずすと特に問題は無いのですが
703 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 21:33:31 ] >>702 エラーメッセージでてるだろ。 そこに理由が書いてあるから読めよ。
704 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 07:33:27 ] >>701 サンクス試してみる。
705 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 08:25:50 ] 別々にマッチした方が良くね?
706 名前:デフォルトの名無しさん [2008/04/14(月) 22:46:37 ] だな。おれもそうする。 どんなプログミング言語で書いてるのかわからんけど if ($password =~ m/^[A-Za-z0-9_\-]+$/ && $password =~ m/[0-9]/ && $password =~ m/[A-Za-z]/) { ほげほげ・・・ } みたい書いたほうが、どんな言語にも応用がきくし あとのメンテナンスも楽だしな。 どうしても無理やり1つにまとめなきゃいかん事情があるんなら別だが。
707 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 01:54:40 ] VC++ 2005、WinXPで開発をしています。 正規表現を扱えるライブラリを探しています。 出来れば、charとwchar_tの両方に対応しているものが欲しいと思っています。 片方なら、boostでいいと思うのですが…… どなたか、ご存知の方教えてください。
708 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:19:25 ] "abc__def__ghi__jkm"という文字列があるとして、 この文字列中の「__」を任意の数だけ半角スペースに置換するという場合 (1が指定されたなら1つ、2が指定されたなら2つというように)、どのような記述になるのでしょうか。 使用言語はPerlです。 oオプションを指定して評価を1度だけにし、ループで回す、という方法は考えたのですが、 可能なら正規表現のみで完結させたいです。 どなたかご存知でしたら教えていただけないでしょうか。 よろしくお願いします。
709 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:48:59 ] perlなら_でsplitしてjoinしたほうが速いような。
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()してからの方が楽だったりするかな。