1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
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()してからの方が楽だったりするかな。