1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY] 【正規表現道場の掟】 ・言語不問 ・質問も大歓迎。使用言語を書くのを忘れずに。 正規表現と関係ない話・質問は他スレへどうぞ。
663 名前:nobodyさん [2010/11/14(日) 23:35:35 ID:xJLLsuw0] できればこんなかんじで エディタの検索置換でやりたいです ↓ d.hatena.ne.jp/seuzo/20080531/1212228668
664 名前:nobodyさん mailto:sage [2010/11/15(月) 00:12:15 ID:???] でこぽん みかん りんご りんご みかん みかん りんご でこぽん こんな風に離れた行に重複がある場合はどうすんだろ?ソート済みなのかな。
665 名前:nobodyさん [2010/11/15(月) 00:48:49 ID:AfSBC14n] エクセルでソートしてあるます
666 名前:nobodyさん [2010/12/06(月) 23:51:24 ID:k5Tua1Td] メールアドレスが正しいかマッチング。 ただし、@gmail.com、@googlemail.com、@livedoor.comの場合は @の前に「+」「.」が含まれている場合は除外する。 これって正規表現1発でできたりしますか?
667 名前:nobodyさん mailto:sage [2010/12/06(月) 23:53:00 ID:???] yes
668 名前:nobodyさん mailto:sage [2010/12/08(水) 14:11:59 ID:???] メールアドレスの妥当性の判定はどのぐらい厳密にやるのだろう
669 名前:nobodyさん [2010/12/20(月) 16:51:11 ID:Qb400/Ia] php5で、tableタグ内の改行(<br />)を全て削除したいのです。 どうしたら良いんでしょう。 ●置換前 <table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx"><br /> <tbody><br /> <tr><br /> <td><br /> </td><br /> </tr><br /> </tbody><br /> </table> ●置換後 <table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx"> <tbody> <tr> <td> </td> </tr> </tbody> </table>
670 名前:nobodyさん mailto:sage [2010/12/20(月) 20:03:43 ID:???] >>669 str_replaceでおk
671 名前:nobodyさん mailto:sage [2010/12/20(月) 20:48:53 ID:???] 普通はstrip_tagsじゃね?
672 名前:nobodyさん mailto:sage [2010/12/21(火) 08:13:01 ID:???] テーブル外のbrは削除したくないんだろ
673 名前:nobodyさん mailto:sage [2010/12/24(金) 08:47:52 ID:???] この手のことをやりたい人は沢山いると思うので 散々既出の可能性がありますが、 参考ページでも構いませんので教えてください UWSCのコードを書くのにK2Editorを使っています 仕上げたコードの可読性をあげるために 演算子の前後にスペースを入れたいです 例 x+y=z x + y = z K2Editorの正規表現はBREGEXP.DLLを使っています 以下の置換をマクロで行います "([^ ])([\+\-\*<])","$1 $2" "([^ <])>","$1 >" "([\+\-\*=])([^ ])","$1 $2" "([^ <>])=","$1 =" "<([^ =>])","< $1" ">([^ =])","> $1" "([^ \/])\/([^\/])","$1 /$3" "([^\/])\/([^ \/])","$1/ $3" " "," " " +"," " "([,=\+\-\*\/\(<>]|mod|and|or|xor) - ","$1 -" 正規表現はド素人でネットで検索しながら書いたので まずい部分も多いと思いますがそれは置いといて、 本題はダブルコーテーションで括られた文字列内は 置換したくないのですが、何か方法はありますか?
674 名前:nobodyさん mailto:sage [2010/12/29(水) 07:28:15 ID:???] 性器表現難しいよね
675 名前:nobodyさん [2011/01/06(木) 22:08:59 ID:y0rS3N6j] 質問です。PHP5.3でpreg_matchを使っているのですが、例えば 「次章(第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては・・・」 という文章より法律名称や条などをwhileループで拾い上げたいのですが、 /([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/ で拾い上げると、法律名称(上の文章だと「建築基準法」)が抜けてしまうので /([建築基準法|建築基準法施行令]*)([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/ と言う形で拾うと、なぜかpreg_match($match, $text, $arr)の$arrの中に、なぜか「第」という文字が拾われてきません。 これは何故なんでしょうか?? もし理由が分かる方がいらっしゃったら、お教え願います。
676 名前:nobodyさん mailto:sage [2011/01/07(金) 03:55:37 ID:???] 性器表現で痴漢する
677 名前:nobodyさん mailto:sage [2011/01/07(金) 03:58:44 ID:???] $text = '次章(第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては'; $pat1 = '/([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/'; $pat2 = '/([建築基準法|建築基準法施行令]*)([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/'; preg_match($pat1, $text, $arr); var_dump($arr); preg_match($pat2, $text, $arr); var_dump($arr); array(7) { [0]=> string(62) "第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては" [1]=> string(2) "第" [2]=> string(2) "20" [3]=> string(2) "条" [4]=> string(1) "3" [5]=> string(0) "" [6]=> string(53) "、第1節の3、・・・除き、建築基準法第80条の2にあっては" } array(8) { [0]=> string(62) "第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては" [1]=> string(0) "" [2]=> string(2) "第" [3]=> string(2) "20" [4]=> string(2) "条" [5]=> string(1) "3" [6]=> string(0) "" [7]=> string(53) "、第1節の3、・・・除き、建築基準法第80条の2にあっては" } 第が拾われないってどこの話? あと関係ないけど複数拾いたいならpreg_match_all
678 名前:nobodyさん mailto:sage [2011/01/07(金) 08:16:20 ID:???] [マルチバイト] この時点でおかしいやろ
679 名前:nobodyさん mailto:sage [2011/01/07(金) 08:35:43 ID:???] u 修飾子つきじゃないのかな? [第]* は量指定子も含めてどうかと思うけどね。
680 名前:nobodyさん mailto:sage [2011/01/07(金) 11:13:33 ID:???] PHPのPerl互換正規表現で、連続した文字を判定したい(3文字以上) 下のではだめ? preg_match("/(.)\1{3,}/", $hoge) 例→AAA、bbb、111、あああ他なら引っかかるようにしたい、ということ
681 名前:nobodyさん mailto:sage [2011/01/07(金) 11:42:34 ID:???] >>680 考え方はいいけど、最初の(.)で1文字食われるから繰り返し回数が 1回多い。それじゃ4文字以上になっちゃうぞ。
682 名前:nobodyさん mailto:sage [2011/01/07(金) 12:06:39 ID:???] >>681 4文字以上連続した文字だとしても、想定したように動かない・・・ ↓OK(Perl) my $hoge = 'aaaa'; if ($hoge =~ /(.)\1{3,}/) { print 'OK'; } else { print 'NG'; } ↓NG(PHP) $hoge = 'aaaa'; if (preg_match("/(.)\1{3,}/", $hoge)) { echo 'OK'; } else { echo 'NG'; } PHPは\1って表現できない?
683 名前:nobodyさん mailto:sage [2011/01/07(金) 12:28:18 ID:???] "..."の中だから¥¥1と書かないと駄目だろ。
684 名前:nobodyさん mailto:sage [2011/01/07(金) 13:39:43 ID:???] $hoge = 'aaaa'; echo preg_match('/(.)\1{3,}/', $hoge) ? 'OK' : 'NG'; // OK "\\1" か '\1' だよね。
685 名前:680 mailto:sage [2011/01/07(金) 14:21:39 ID:???] あたしばかよね・・・ ありがとうございました uも付けて完動です
686 名前:675 [2011/01/08(土) 22:00:49 ID:GTa36OYO] 返事遅くなりまして申し訳ありません。 /uを追加したら見事に機能しました。 というか、今までさんざん正規表現を日本語に適用していたのですが、/uのことを全く知りませんでした。 お恥ずかしい限りです。 お教えいただき、ありがとうございました。
687 名前:675 [2011/01/17(月) 22:15:13 ID:Br3WLX+O] 更に質問です。 「...にあっては国土交通大臣が定めた安全上必要な技術的のうちその指定するに係る部分に限る。)、第119条、第5章の4(第129条の2の5第1項の2第6号...」 という文章から、第○○条の○○の○○などを抜き取り、かつその前後の文章も取得したいと考えています。 そこで 「/^(.+)*([第])([1-9]+[0-9]*)*([条]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/u」 というパターンでpreg_matchで拾いだそうと思うのですが、全く思うように拾いだせません。 何が問題なのでしょうか?? プログラムとしては、 <?php $text = 'にあっては国土交通大臣が定めた安全上必要な技術的のうちその指定するに係る部分に限る。)、第119条、第5章の4(第129条の2の5第1項の2第6号の文章'; print 'text : ' . $text . '<br>'; $match = '/^(.+)*([第])([1-9]+[0-9]*)*([条]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/u'; print 'match : ' . $match . '<br>'; preg_match($match,$text,$arr); print 'arr : '; print_r($arr); print '<br>'; ?> こんな感じです。 もし分かる方がいらっしゃったら、お教え願います。
688 名前:nobodyさん mailto:sage [2011/01/17(月) 22:47:22 ID:???] 問題を切り分けてから質問してくれ
689 名前:マッチした文字列を小文字にしたい [2011/01/17(月) 22:59:46 ID:e71m2/yA] PHPにおける正規表現に関する質問です。 下のサンプルプログラムでは$3が両方とも大文字の「US」になりますが、 最初の$3だけを小文字の「us」にする方法があれば教えてください。 OSはWindows、PHPは5.3です。 元の文字列の例 Country: US 変換後に得たい文字列の例 Country: <a href="ja.wikipedia.org/wiki/.us ">US</a> サンプルプログラム <?php $result = ''; $text = 'Country: US'; $pattern = '/(Country):(\s+)([A-Z]{2})/i'; $replace = "$1:$2<a href=\"ja.wikipedia.org/wiki/.$3\ ">$3</a>"; $result = preg_replace($pattern, $replace, $text); echo $result; ?>
690 名前:nobodyさん mailto:sage [2011/01/17(月) 23:51:56 ID:???] 手元のエディタでは\Lでできるんだけどな PHPで使える置換パターンが良く分からない e修飾子つけちゃうとか
691 名前:689 mailto:sage [2011/01/18(火) 01:02:24 ID:???] そうですね。Perlだと\lで次の文字が小文字になるとかあるみたいですが、 PHPにはないんですかね? ほかの方法でもかまいませんので、 引き続き、回答をお待ちしております。
692 名前:nobodyさん mailto:sage [2011/01/18(火) 01:17:36 ID:???] >>689 $pattern = '/(Country):(\s+)([A-Z]{2})/ie'; $replace = '"$1:$2<a href=\"ja.wikipedia.org/wiki/. " .strtolower($3). "\">$3</a>"'; 書いてみたら引用符がすっきりしない感じになってしまった。
693 名前:nobodyさん [2011/01/18(火) 19:32:41 ID:sm74ERjN] あの正規表現ですが、今までうまくつかえていないというか下手 です。で、勉強しようと思うのですが、 反復学習ソフト付き 正規表現書き方ドリル これいいですかね? オライリーとどっちがいいかなって思うんですけど。
694 名前:nobodyさん mailto:sage [2011/01/18(火) 22:59:06 ID:???] >>693 Webでおk
695 名前:nobodyさん mailto:sage [2011/01/19(水) 10:36:15 ID:???] >>693 良いと思うよ。 オライリーも良い本だけど、ひととおり基礎ができてからで良いと思う。
696 名前:689 mailto:sage [2011/01/19(水) 21:20:53 ID:???] >>692 できました。 ただ、「DO」というドミニカの国別コードの時、予約語と重なってエラーになったので、 ダブルクォートにしました。 $pattern = '/(Country):(\s+)([A-Z]{2})/ie'; $replace = '"$1:$2<a href=\"ja.wikipedia.org/wiki/. " .strtolower("$3"). "\">$3</a>"'; どうもありがとうございました。
697 名前:nobodyさん mailto:sage [2011/01/19(水) 21:48:50 ID:???] >>690 でe修飾子と言っているのに
698 名前:nobodyさん [2011/01/19(水) 23:40:21 ID:zqG6AlFK] 抽象的な質問で申し訳ないんですが、本の話が出たのでついでに伺いたいんですが。 今まで表計算ソフトやデータベースソフトなど普通に習得し、 更に興味が出てきたのでMySQLとPHPを使ってプログラミングしたり、 apacheやPostFixなども何とか使えるようになり、何となく分かってきた感じがしてるのですが、 正規表現に関しては、未だに「どうにか使っているけど、理解は出来ていない感じ」がします。 とりあえずやってみて、だめで違う手を試してみたりして.... まるで別種類な考え方が必要な気がします。 なので質問なのですが、正規表現を理解するのに一番良い本とか、 正規表現について「目から鱗が落ちた!!一皮むけた!!理解が深まった」 って思えるような本とかあったら、紹介いただけないでしょうか?? それとも忍耐強く、失敗しては考える繰り返しでなければ、習得できない物なのでしょうか?? 当方今年で三十路なので、頭が固くなってきてるのかもしれませんが、いまいち頭にしみ込みにくくなってるような気がしてます。 もしよろしければお教え願います。
699 名前:nobodyさん mailto:sage [2011/01/20(木) 00:05:42 ID:???] >>698 何となく分かった気になっている時は何も分かってないからもっと簡単なのからやれ
700 名前:693 [2011/01/20(木) 01:01:52 ID:973KUxXQ] >>695 ありがとうございます。 基礎から勉強したいので、買います。
701 名前:nobodyさん mailto:sage [2011/01/20(木) 13:16:18 ID:???] 正規表現のスレ (プログラム板や UNIX 板にもある) のログを見て、 質問のお題を片っ端から解いていくと、結構良い練習になると思う。
702 名前:nobodyさん [2011/01/20(木) 23:13:37 ID:LxK6uyro] 次の正規表現でhogeフォルダ以下の最後の「/」の後に「i/」が挟まるようにURLを変換しております。 RewriteRule ^/hoge(.*)/(.*).html$ example.com/hoge/$1/i/$2.html [L] 下記のような場合は問題ないのですが example.com/hoge → example.com/hoge/i/ example.com/hoge/saitama/2011/01/index.html → example.com/hoge/saitama/2011/01/i/index.html ↓のようにhogeで始まるディレクトリまでも変換されてしまいます。 example.com/hogehoge/kankeinai.html hogeフォルダ配下のみ変換されるようにするには、どうしたらいいでしょうか? 環境は CentOS5 Apache2
703 名前:nobodyさん mailto:sage [2011/01/21(金) 00:15:43 ID:???] /hoge/(.*)〜にすればいいじゃん
704 名前:nobodyさん mailto:sage [2011/01/21(金) 18:26:53 ID:???] >>698 頭の良い人だとまた違うのかもしれないけど、 我々のような凡人は繰り返しやって経験値を積むしかないかなあ、って気がする。 で、何か読んで一つ山を越えたいなら、現状ではオライリー本の一択しか無いと思う。
705 名前:nobodyさん mailto:sage [2011/02/10(木) 13:57:44 ID:???] 対象の文字列にハングル文字が含まれるかどうかを判断したいのですが よい方法が思い浮かびません。 javascriptです。
706 名前:nobodyさん [2011/02/27(日) 08:37:54.94 ID:GexZY7hJ] 1. preg_match('/[\(]{2}?(.*?)\:(.*?)[\)]{2}?/', $text, $match) この変換を変数展開で実行したいのですが、 正規表現で使える記号の変数展開のやりかたを教えてください。 2.$exprString = '/[\(]{2}?(.*?)\:(.*?)[\)]{2}?/'; preg_match("/$exprString/", $text, $match); これだとうまく行きません。
707 名前:nobodyさん mailto:sage [2011/02/27(日) 09:01:28.34 ID:???] "/$exprString/"を展開したら"//[\(]{2}?(.*?)\:(.*?)[\)]{2}?//"になるぜ?
708 名前:706 mailto:sage [2011/02/27(日) 09:23:38.46 ID:???] >>707 解決しました。全く気がつかずに悩んでました。ありがとうございます。
709 名前:nobodyさん [2011/02/27(日) 16:36:06.93 ID:KOnmSusx] 反復学習ソフト付き 正規表現書き方ドリル やりました。 非常に勉強になりました。楽しかったし、なんかパズルをといている みたいで、ただ残念ながらソフトはうごきませんでした。
710 名前:nobodyさん [2011/03/03(木) 19:14:51.88 ID:v/2VFVai] 以下はqdmail_receiver.phpというメール受信のプログラムの一部で、 添付ファイルのファイル名を取得している部分になります。 しかし、ファイル名に半角スペースがあると、半角スペースで文字列が切れてしまう という現象があります。 半角スペースで途切れないようにするのはどのようにすればよいのでしょうか? preg_match('/name\s*=\s*"?([^"\s\r\n]+)"?\r?\n?/is',$header['content-type'] , $matches ) よろしくお願いします。
711 名前:nobodyさん mailto:sage [2011/03/03(木) 20:18:10.39 ID:???] [^"\s\r\n]+ "でもスペースでも改行でもない文字が続く限り〜 って自分で書いてるやん
712 名前:nobodyさん mailto:sage [2011/03/04(金) 10:24:26.15 ID:???] ここで聞いてるくらいだから [^"\r\n]+ こう書き換えれって教えないと
713 名前:710 [2011/03/04(金) 13:32:58.16 ID:8WvXj1g+] >>712 ありがとうございます。 うまくいきました。 <(_ _)>
714 名前:712 mailto:sage [2011/03/04(金) 16:50:29.72 ID:???] うまくいったならいいけど、ファイル名抜き出し部分の後続がすべて?だから もし"で囲まれてないのが来たらアウトだけどな /name=(?:"([^"\r\n]+)"|([^\s\r\n]+))/i でマッチさせて if (empty($matches[1])) $matches[1] = $matches[2]; みたいにしたほうが手堅いかもな
715 名前:nobodyさん mailto:sage [2011/03/06(日) 18:00:58.46 ID:???] 【言語】PHP5.3 【OS】XP 自前のBBSをもっていますが、最近、レス番号にリンクをつけたく思い、「>>1 」のようなレスをpreg_matchでリンクタグ生成しようと試みました。 preg_match('/>>[0-9]+/',$text,$link); preg_replace('/>>[0-9]+/','<a href="#">'.$link[$n].'</a>',$text); この関数では最初にマッチするレスしか変換できませんでした。 何かよい案がありましたらお願いします。
716 名前:nobodyさん mailto:sage [2011/03/08(火) 00:32:23.62 ID:???] preg_match_all 使えば?
717 名前:nobodyさん [2011/06/04(土) 18:19:07.23 ID:GeFi3irL] <html>......<div class="list">画像リスト<br>1枚目<br><img src="example.com/aaa.jpg "><br> 2枚目<br><img src="example.com/bbb.jpg "><br> 3枚目<br><img src="example.com/ccc.jpg "><br>もっと見る<br></div>........</html> これで<div class="list">と</div>の間のアドレスだけ抜き出すのってどうやりますか? ........の中にも画像アドレスがあります。そっちはマッチさせないようにしたい。 preg_match_all("/list\".+?src=\"(.+)\".+</div>/", $html, $m);
718 名前:nobodyさん mailto:sage [2011/06/04(土) 19:29:38.67 ID:???] 2段階に分けるべし
719 名前:nobodyさん mailto:sage [2011/06/04(土) 19:32:39.30 ID:???] >>717 なんでそれを正規表現でやろうとするのかがわからん。視野狭窄か。
720 名前:nobodyさん mailto:sage [2011/06/04(土) 22:11:24.15 ID:???] >>717 php.net/manual/ja/function.preg-replace-callback.php
721 名前: 忍法帖【Lv=4,xxxP】 mailto:sage [2011/06/04(土) 22:38:07.91 ID:???] 質問者が言語を指定していない時点でお察し下さいレベル。
722 名前:nobodyさん mailto:sage [2011/06/04(土) 23:04:45.68 ID:???] preg_match_all は PHP の関数
723 名前:nobodyさん [2011/06/05(日) 14:02:49.98 ID:uEzVCQDA] >>717 正規表現一発でできそうな気がするんですが、無理ですか? 固定単語--- この中を検索 ---固定単語 こんな場面てよくあるような
724 名前:nobodyさん mailto:sage [2011/06/06(月) 08:01:30.97 ID:???] >>709 win7HP?
725 名前:nobodyさん [2011/06/16(木) 23:36:27.10 ID:SYj2PUn3] phpでpreg使っています。 あるファイル内の <td width="71%" valign="top" align="center"><div align = "center"> を <td width="71%" valign="top" align="center"> だけに変換したいとおもい $regTxt = "/<td ([a-z0-9\"=\s\%]+)><div ([a-z0-9\"=\s\%]+)>/is"; preg_match($regTxt,$x,$exchangeArr); で$exchangeArr[1]を削除するため、preg_replaceを使おうと思っています。 ただ、最初のpreg_matchでマッチしません。 どうしたら出来るのでしょうか?? どなたかお教えください。お願いします。
726 名前:nobodyさん mailto:sage [2011/06/16(木) 23:41:03.98 ID:???] preg_matchで$exchangeArr[1]を削除するためpreg_replace? 日本語でおk
727 名前:nobodyさん [2011/06/16(木) 23:44:03.44 ID:SYj2PUn3] <div align = "center"> を削除するため でお願いします。
728 名前:nobodyさん mailto:sage [2011/06/16(木) 23:45:43.17 ID:???] preg_matchとpreg_replaceを併用する必要があんの?
729 名前:nobodyさん [2011/06/16(木) 23:52:34.42 ID:SYj2PUn3] <td....>が様々な形をとっているため、まずはそれらを取り出す必要があるかと思い、そうしてます。 <td....><div...>という形で、<td...>も<div...>のそれぞれの...が、様々な形をとっているけど、<td...>だけをきれいに残したいのです。 ただ、<div...>だけのもの(前に<td...>がついていない)は変換したくないのです。 こんな説明でわかります?
730 名前:nobodyさん mailto:sage [2011/06/16(木) 23:56:08.62 ID:???] 正規表現を細分化して問題の切り分けしてみるといいと思うよ
731 名前:nobodyさん mailto:sage [2011/06/18(土) 14:34:02.52 ID:???] >>725 ,729 その様々な形を正規表現で指定すればいいと思うけどね。 $string = '<td width="71%" valign="top" align="center"><div align = "center">'; $string = preg_replace('/(<td [^>]+><div) [^>]+/', '$1', $string);
732 名前:nobodyさん mailto:sage [2011/06/18(土) 14:41:26.83 ID:???] 閉じタグのことは無視かい
733 名前:731 mailto:sage [2011/06/18(土) 17:07:20.38 ID:???] >>732 それは俺も思った。 divがネストしていたら対応関係がおかしくなるはずなんで開始タグは残すべきだと思うな。
734 名前:nobodyさん [2011/06/30(木) 00:52:32.34 ID:hWRw8zI0] PHP5.3のpreg_replaceで /<td[^>]+><div[^>]+/とかで正規表現をやっても、全く変更されません。 preg_matchでやってみると<td[^>]+>までならmatchするけど、「<」以降を入れると、全く引っかかってきません。 何か思い当たること、ないでしょうか?
735 名前:nobodyさん mailto:sage [2011/06/30(木) 06:05:38.15 ID:???] 対象としている文字列にその正規表現にマッチする部分が存在しない
736 名前:nobodyさん mailto:sage [2011/06/30(木) 07:23:46.62 ID:???] 何か勘違いしているとか見落としているとしか思えない
737 名前:nobodyさん mailto:sage [2011/06/30(木) 21:31:52.67 ID:???] 量指定子を'+'から'*'にしてみたらマッチしました、みたいな話な気がしてならない。
738 名前:734 [2011/07/03(日) 22:32:36.09 ID:8QAPbG3u] どうやら正規表現は問題なかったみたいです。 phpでファイルをfopenで読み込んで、 while ($x = fgets($fp,1092)) {...}で変換をさせているんだけど、 <td..>部分と<div..>部分の間に改行が入っているから、変換できないらしい。 どうしたらいいでしょう??
739 名前:nobodyさん mailto:sage [2011/07/03(日) 22:39:11.31 ID:???] 工夫すれば?
740 名前:nobodyさん [2011/07/03(日) 23:37:07.72 ID:ypX399q3] $string = preg_replace('/<div align = \"center\"> /', '', $string); $string = preg_replace('/<\/div>/', '', $string); か、 $string = preg_replace('/<div(.*?)> /', '', $string); $string = preg_replace('/<\/div>/', '', $string); じゃねえの
741 名前:734 [2011/07/03(日) 23:45:10.46 ID:8QAPbG3u] 全てのdivを削除したい訳でなく、<td....></td>間にある<div></div>を削除したいのです。 <td....></td>間にあるものは削除して、それ以外は改行したいのです。
742 名前:nobodyさん mailto:sage [2011/07/05(火) 00:46:35.42 ID:???] preg_replaceを連打して取りたいのだけ取ればええやん
743 名前:nobodyさん mailto:sage [2011/07/16(土) 18:02:18.22 ID:???] http://から最初の空白までを抽出する正規表現はどうなりますか?
744 名前:nobodyさん mailto:sage [2011/07/16(土) 22:16:17.55 ID:???] /http:\/\/[^ ]* /
745 名前:nobodyさん [2011/07/23(土) 20:12:09.44 ID:lXdqpzgT] Aの繰り返しはA+とかA{m,n}でマッチできますが、 繰り返された個数を元にAAAAAをA*5などに置換する「うまい」方法はあるでしょうか。 言語はとりあえずJavaScriptで考えています。 replace(/A+/g, 'A*'); //←ここから進まない。
746 名前:nobodyさん mailto:sage [2011/07/23(土) 20:22:41.87 ID:???] >>745 正規表現にはないのでJavaScriptスレへ
747 名前:nobodyさん [2011/07/23(土) 20:34:12.11 ID:lXdqpzgT] >>746 ありがとうございます。以下で質問し直しました。 hibari.2ch.net/test/read.cgi/hp/1311096825/90n
748 名前:nobodyさん [2011/07/24(日) 19:06:14.31 ID:/DoWXp9n] 「次の人」または「前の人」という文字列を文章内から拾う場合、どの様な書き方が良いのでしょうか?? [次の人 | 前の人] だと「の」一文字だけでも拾ってしまいます…
749 名前:nobodyさん mailto:sage [2011/07/24(日) 21:04:07.81 ID:???] "[abc]"は「『a』か『b』か『c』にマッチ」だぞ…。 君の書いた正規表現は「『次』か『前』か『の』か『人』か『|』か『 』にマッチ」だ。 多分"(次の人|前の人)"みたいなことがしたかったんだろうけど、 "[次前]の人"でいいと思う。
750 名前:nobodyさん mailto:sage [2011/07/24(日) 21:07:51.65 ID:???] あと、似たようなのでありがちなのが "[^hogehoge]"で文字列の否定を指定したつもりになっちゃう人。 もちろん間違い。念の為。
751 名前:nobodyさん [2011/07/24(日) 22:38:19.38 ID:X7IDpmYo] >>750 では何が正しいのでしょうか?
752 名前:nobodyさん mailto:sage [2011/07/24(日) 22:54:58.14 ID:???] >>751 [次前]の人
753 名前:nobodyさん mailto:sage [2011/07/24(日) 23:02:35.46 ID:???] あ、とんちんかんだった。 文字列の否定は (?!.*文字列.*).* みたいのかなぁ
754 名前:nobodyさん [2011/07/25(月) 21:55:36.12 ID:RVWZInKC] formからの情報を編集しているんですがケータイ絵文字(5社の)が入ったら消すというのはできますか? PHP5です。
755 名前:nobodyさん mailto:sage [2011/07/25(月) 22:46:11.52 ID:???] >>754 3社だけど、 Emo PHP携帯絵文字ライブラリ gard.no-ip.info/emo/readme/study/reg.html
756 名前:nobodyさん [2011/07/25(月) 23:06:55.26 ID:RVWZInKC] >>754 ありがとうございました
757 名前:nobodyさん [2011/07/27(水) 20:41:33.29 ID:PkulA4Dr] 40過ぎたオッサンが、訓練校出てWebで独立するとか寝言いってますwwwwww サラリーマンに、無理だと指摘され発狂中wwww Webデザインの基金訓練を受講してる人 Part2 yuzuru.2ch.net/test/read.cgi/dame/1308059991 >>505 俺は40代で基金訓練受けて、これから独立しようと考えてるがな。 まぁ若干経験あるからその方面での話だけど。 基金訓練は単に「バナーくらい作れますよ」って言うだけのために受けた。 30代ならデジハリにもいっぱいいるぞ、余裕だろ。 ちゃんとした社会人経験があればだが。
758 名前:nobodyさん mailto:sage [2011/07/30(土) 14:00:39.72 ID:???] >>757 ID:1gQ87Cnm がきもかった
759 名前:nobodyさん mailto:sage [2011/08/01(月) 07:47:20.91 ID:???] ^(\d{3},)*\d{3}$ 上記正規表現で123がヒットする理由が分かりません カンマがなくても何故ヒットするんですか? *の前が()だからであってますか? <対象文字列> 123 123,456 987,654,321 123,789,456,012 9876,543 123,456, <HIT文字列> 123 123,456 987,654,321 123,789,456,012
760 名前:nobodyさん mailto:sage [2011/08/01(月) 07:59:48.61 ID:???] >>759 *の意味を調べよう
761 名前:nobodyさん mailto:sage [2011/08/01(月) 07:59:51.56 ID:???] * → + で解決しない? *はゼロ個以上でマッチだから。
762 名前:759 mailto:sage [2011/08/01(月) 08:58:25.47 ID:???] >>760 調べなくても分かってますが()*も同様なのかと思いまして >>761 いえ、nnnの場合もヒットさせたかったので*でいいのです 仕様というか動きの確認だけが目的で書き込んだので
763 名前:nobodyさん [2011/08/01(月) 09:39:13.59 ID:3IgNAOvk] >>759 の意図がいまいちよくわからんが、 「a*」の時と「(abc)*」の時とで*の機能が変わらないことを確認したかったの? あと若干言葉遣いに波風が立つ雰囲気を感じてしまうのはオレだけ(笑)?
764 名前:nobodyさん mailto:sage [2011/08/01(月) 09:43:31.28 ID:???] ヒント:ID隠し
765 名前:nobodyさん mailto:sage [2011/08/01(月) 09:48:49.11 ID:???] 俺もちょっとイラッときた
766 名前:nobodyさん mailto:sage [2011/08/01(月) 09:52:47.51 ID:???] (\d{3},)* 関係ないじゃんw
767 名前:nobodyさん mailto:sage [2011/08/01(月) 10:28:45.34 ID:???] >>762 どう見てもわかってないだろw
768 名前:nobodyさん mailto:sage [2011/08/01(月) 17:56:48.08 ID:???] >>763 > >>759 の意図がいまいちよくわからんが、 > 「a*」の時と「(abc)*」の時とで*の機能が変わらないことを確認したかったの? はい > あと若干言葉遣いに波風が立つ雰囲気を感じてしまうのはオレだけ(笑)? イラッ☆
769 名前:nobodyさん mailto:sage [2011/08/01(月) 17:59:56.76 ID:???] 機能が変わらない事の確認なのに質問内容が >ヒットする理由がわかりません っておかしいだろw
770 名前:nobodyさん mailto:sage [2011/08/01(月) 18:00:59.64 ID:???] >>766 どう言う事でしょうか? もっとスマートな方法があるのであれば是非ご教示願います >>767 何がいけないのかさっぱりです 直近文字の0回以上のhitって事でないの?
771 名前:nobodyさん mailto:sage [2011/08/01(月) 18:02:51.58 ID:???] >>769 そんなおかしいですかね でも、確かに表現が悪くて申し訳ないです
772 名前:nobodyさん [2011/08/01(月) 18:11:52.38 ID:3IgNAOvk] 根はいいやつそうでよかった(´ω`)…。
773 名前:nobodyさん mailto:sage [2011/08/01(月) 18:44:25.32 ID:???] 直近「文字」とは限らないだよ。 (お題のこんなのとか)*(?:ほかにもこんなのとか)*[いろ]*あるでしょう。
774 名前:nobodyさん mailto:sage [2011/08/01(月) 19:21:33.25 ID:???] >>770 123がヒットしたのは \d{3}の部分だけといえば分かるだろうか (\d{3},)*は0回ってことで
775 名前:nobodyさん mailto:sage [2011/08/01(月) 22:22:11.88 ID:???] >>774 超絶完全理解感謝激励歓迎降臨! 謝謝!! 伝わり難い文章で多レスしてしまってすいませんでした
776 名前:nobodyさん [2011/08/01(月) 22:37:10.25 ID:3IgNAOvk] >>774 の指摘がそこまで的確なものだったってのもいまいちピンと来ない件(笑) まあよかったな( ´∀`)
777 名前:nobodyさん mailto:sage [2011/08/01(月) 22:54:31.04 ID:???] わろた
778 名前:nobodyさん mailto:sage [2011/08/02(火) 11:07:19.68 ID:???] 結局わかってなかったんじゃんw
779 名前:nobodyさん mailto:sage [2011/08/03(水) 19:33:03.57 ID:???] 762 名前: 759 [sage] 投稿日: 2011/08/01(月) 08:58:25.47 ID:??? >>760 調べなくても分かってますが()*も同様なのかと思いまして >>761 いえ、nnnの場合もヒットさせたかったので*でいいのです 仕様というか動きの確認だけが目的で書き込んだので
780 名前:nobodyさん mailto:sage [2011/08/04(木) 09:41:51.16 ID:???] 動きの確認ならパターン出してテストすりゃいいだけじゃん なんかイラッとするな
781 名前:nobodyさん mailto:sage [2011/08/04(木) 12:34:18.67 ID:???] >>780 イラッ☆
782 名前:nobodyさん mailto:sage [2011/08/26(金) 08:02:24.21 ID:???] test
783 名前:nobodyさん mailto:sage [2011/09/02(金) 00:33:38.37 ID:???] >>782 イラッ☆
784 名前:nobodyさん mailto:sage [2011/09/06(火) 00:06:31.30 ID:???] ttp//aaa.co.jp:8888 http//bbb.com:9999/ を除外しつつ 他の h?ttp//○○○.△△△.□□□:☆☆☆/? ↑ここから ここまで↑ をヒットさせたいのですが色々試したのですが出来ませんでした 何か方法がありますでしょうか?
785 名前:nobodyさん mailto:sage [2011/09/06(火) 00:20:00.51 ID:???] h?ttp:\/\/(?!aaa.co.jp:8888|bbb.com:9999)(\w+\.)+\w+(:\d+)?\/?
786 名前:nobodyさん mailto:sage [2011/09/06(火) 00:28:37.10 ID:???] >>785 レスありがとうございます 助かりました
787 名前:nobodyさん mailto:sage [2011/09/14(水) 01:54:57.08 ID:???] 2chのdatの1(1行目)のレス内にトリップ(10桁以上でも10〜12桁でもok)が 含まれてる場合にヒットさせたいのですが、一部除外したいトリップあります ◆(?!5s5hPZiJeU|ozOtJW9BFA).{10} まではできたような気がするのですが1行目にマッチさせるにはどうしたら良いでしょうか SJISです。
788 名前:nobodyさん mailto:sage [2011/09/14(水) 08:26:15.86 ID:???] >>787 ^?dとか
789 名前:nobodyさん mailto:sage [2011/09/14(水) 13:20:15.86 ID:???] >>787 mフラグ >>788 ?
790 名前:nobodyさん mailto:sage [2011/09/15(木) 22:42:04.53 ID:???] >>789 ありがとうございます よく分からなかったので調べてみると複数行の行頭、文末にマッチさせることができるのですね 残念ながら行頭、文末にトリップがあるわけでないのでうまくないようです。。
791 名前:nobodyさん mailto:sage [2011/09/16(金) 01:40:23.90 ID:???] >>790 789ではないが、mフラグをつけたら駄目だ ^ を利用すれば一行目のトリップにマッチできる mフラグをつけたら破綻する
792 名前:nobodyさん mailto:sage [2011/09/16(金) 01:49:30.98 ID:???] 処理系を書かないからでしょ。 >>789 のいうmオプションは「改行文字を無視する単一行モード」の意味 (Ruby等の流儀)で書いていて、 >>790 はそれを「複数行モード」の意味(Perl等の流儀)に取っている。
793 名前:nobodyさん mailto:sage [2011/09/22(木) 02:27:55.73 ID:???] >>790 先頭から、最初に改行コードが出てくるまでが1行目だよ
794 名前:nobodyさん [2011/10/02(日) 19:26:42.05 ID:Tnal10Vi] abcdefgfedcba という文字列から defという文字列を消すこと出来るのですが、 def以外を消すにはどうすればいいのでしょうか?
795 名前:nobodyさん [2011/10/02(日) 20:09:22.37 ID:zbShr9jh] 漠然としすぎ
796 名前:nobodyさん mailto:sage [2011/10/03(月) 06:19:41.91 ID:???] >>794 よくわからんが否定はめんどくさいぞ。 ([^def]|d(?!ef)|(?<!d)e(?!f)|(?<!de)f) でdefの一部であるd,e,f以外の任意の1文字にマッチするから これでなんとかなるだろう。
797 名前:nobodyさん mailto:sage [2011/10/03(月) 21:56:35.04 ID:???] >>794 環境によるけど、(def)ですべてにマッチさせて、あとから取得した$1的なものに置換すればいいのでは
798 名前:nobodyさん mailto:sage [2011/10/07(金) 11:38:20.62 ID:???] >>794 /def|[\s\S]/ でcallbackして def 以外は全て削除
799 名前:nobodyさん mailto:sage [2011/10/10(月) 10:36:17.70 ID:???] PHPにてHTMLタグ以外の全ての文字について、全角・半角の統一などの処理を したいと思うのですが、例えば英字を全角で統一したい場合、素人考えでは 最も単純に作業をするには「全ての英字を全角に」→「タグのみ半角に」という 2回に分けた処理がベストかと思うのですが、もっと効率の良い処理の方法は ありますでしょうか?
800 名前:nobodyさん mailto:sage [2011/10/10(月) 11:10:33.30 ID:???] PHPなら効率にこだわるより、メンテナンス性を重視した方がいいと思う。
801 名前:nobodyさん [2011/10/10(月) 16:07:33.02 ID:gughiUX1] "<"に続く文字(">"が来たら終了)は全部半角化 それ以外はどしどし全角化 でおk それはさておき、やんごとなき理由さえなければ統一するなら全角じゃなく半角にしとけ。
802 名前:nobodyさん mailto:sage [2011/10/11(火) 00:33:04.23 ID:???] >>799 DOMで処理するのがいいかと
803 名前:nobodyさん mailto:sage [2011/10/11(火) 00:36:07.74 ID:???] >>801 <input type="button" value="zenkaku">
804 名前:nobodyさん mailto:sage [2011/10/11(火) 23:11:43.85 ID:???] >>800 メンテナンス性にこだわるとどんな感じになるか……まるでイメージできません……orz >>801 すいません、やんごとなき理由で全角化せねばならないのです…。 ところでその方法は正規表現は特に使わず、1文字ずつチェックしていく感じでしょうか? >>802 DOMを使うというと……やはりこれも正規表現は使わない感じですか? >>803 今回は特にタグの中身まではいじらない予定なので全角valueでもokです。
805 名前:nobodyさん mailto:sage [2011/10/12(水) 00:03:54.71 ID:???] >>801 すいません、スレ違いになってしまいましたが、ひとまずその方法を試してみました。 が、実体参照(&anpとか)が出てきたときにややこしいことになりそうです…orz この場合だけ力技で切り抜けるか、もしくはやはりある程度正規表現で処理を した方が良さそうな気がしますがどうでしょうか。 あるいはDOMの方が簡単なのでしょうか…? どう回せばタグの中身が取り出せるのかいまひとつわからないです。。。
806 名前:nobodyさん mailto:sage [2011/10/12(水) 00:21:33.58 ID:???] あー…後から全角&XXX;を半角にするって方法もありますねえ…。 うーん。
807 名前:nobodyさん [2011/10/14(金) 09:47:43.56 ID:+/AP5o7r] htmlのソースからタグを除外するのに挑戦してて以下のようにしたんですが もっと効率いいやり方あるでしょうか? \<[a-zA-Z0-9\"\<\>\ \=\;\:\/\.\_\-\(\)\#\!\'\&\%]+
808 名前:nobodyさん mailto:sage [2011/10/14(金) 15:25:07.10 ID:???] どんだけ円がすきなのかとw
809 名前:nobodyさん [2011/10/14(金) 15:26:32.18 ID:i4T0D1ix] >>807 ↓だと「Hello」ごと消えていかないか? <p>Hello</p> ↓だと「…alt="」で止まってしまわないか? <img src="hello.png" alt="こんにちは"> ↓というわけでこれでいいんじゃないの。 <[^>]>
810 名前:nobodyさん [2011/10/14(金) 15:28:56.11 ID:i4T0D1ix] 失礼「+」が抜けてた <[^>]+>
811 名前:nobodyさん [2011/10/15(土) 02:18:16.86 ID:pl58b8lQ] フジテレビデモ 花王デモ 要チェック
812 名前:nobodyさん mailto:sage [2011/10/15(土) 15:28:36.48 ID:???] >>809 これは便利。ありがとう
813 名前:nobodyさん mailto:sage [2011/10/15(土) 16:07:18.81 ID:???] いいってことよ
814 名前:809 [2011/10/15(土) 18:11:07.01 ID:5td5CFAR] >>813 www
815 名前:nobodyさん mailto:sage [2011/11/01(火) 16:59:25.75 ID:???] 行単位をダブルクオートで囲む正規表現で ああああ文字列ああああ いいいい文字列いいいい 検索 /^.*$/m 置き換え "$0" とした場合に "ああああ文字列ああああ " "いいいい文字列いいいい " となってしまいます。"ああああ文字列ああああ"としたいのですが、どのようにすれば良いでしょうか PHPのpreg_replaceを使っています。よろしくお願いします。
816 名前:nobodyさん mailto:sage [2011/11/01(火) 17:49:42.69 ID:???] マッチするないように改行が含まれてるから。
817 名前:nobodyさん mailto:sage [2011/11/01(火) 18:23:24.87 ID:???] >>815 自己レス \x0Dが原因でした。
818 名前:nobodyさん mailto:sage [2011/11/01(火) 22:17:43.68 ID:???] >>817 >>816 を無視するのか
819 名前:nobodyさん mailto:sage [2011/11/01(火) 22:40:47.00 ID:???] >>818 >>816 の > マッチするないように改行が含まれてるから。 ではなくて マッチするないように改行が含まれていなくても\x0Dが付加されるから 無視ではありません。
820 名前:816 != 818 mailto:sage [2011/11/01(火) 23:45:06.62 ID:???] >>819 言い方が悪かったのかな。CRが含まれてるから。 別にCRは付加されたりしないよ。 preg_replace("/^([^\r]*)\r?$/m", "\\1", $text); とするか、LFのみに変換してから処理するか。
821 名前:nobodyさん mailto:sage [2011/11/07(月) 22:53:15.08 ID:???] 住所と番地の間にある空白を削除する場合どうやればいいですか? 「見附市 見附 123番地」この文字列を 「見附市 見附123番地」としたいです 「見附市」と「見附」の間の空白はそのままという条件付です
822 名前:nobodyさん mailto:sage [2011/11/08(火) 00:28:51.98 ID:???] 数字が必ずある前提で、 \s[\d]
823 名前:nobodyさん mailto:sage [2011/11/08(火) 01:11:57.96 ID:???] (?!市).\s
824 名前:nobodyさん mailto:sage [2011/11/08(火) 08:57:43.48 ID:???] >>823 町や村にもヒットさせろよw 群はいらないか
825 名前:nobodyさん mailto:sage [2011/11/08(火) 10:58:00.13 ID:???] (東京都|北海道|(?:京都|大阪)府|[県市区群])\s+ ↓ \1
826 名前:nobodyさん mailto:sage [2011/11/08(火) 10:58:59.04 ID:???] ああ、勘違いした >>825 は流してくれ
827 名前:nobodyさん mailto:sage [2011/11/08(火) 12:21:27.42 ID:???] >>821 (?![市区町村]).\s
828 名前:816 != 818 mailto:sage [2011/11/08(火) 13:46:47.91 ID:???] 郡、な。
829 名前:nobodyさん mailto:sage [2011/11/08(火) 20:01:17.27 ID:???] しゅくちょく
830 名前:nobodyさん mailto:sage [2011/11/09(水) 02:32:34.16 ID:???] >>827 空白にマッチしたいんだから↓の間違いだよね。 (?<![市区町村])\s+
831 名前:nobodyさん [2011/11/23(水) 06:53:59.84 ID:V5f5mApl] ![[ 文字列 ![[別の文字]] ![[ほげほげ]] ]] ![[何か]]←これが1単位で、↑こんなの中から最短マッチで抽出したく、以下のようにしました。 $pattern = '/!\[\[([^\[\]]+)\]{2,2}?/'; しかしこの場合、ブラケットが使えないので困っています。 ![[ この中に[←とか]←があると使えない ]] 最短マッチさせるにはどう書けばいいでしょうか?
832 名前:nobodyさん mailto:sage [2011/11/23(水) 07:02:11.30 ID:???] $pattern = '/!\[\[.+?]]{2,2}?/';
833 名前:nobodyさん [2011/11/23(水) 09:23:16.47 ID:V5f5mApl] >>832 ありがとうございます。 ちなみに↓こうでしょうか? $pattern = '/!\[\[.+?\]{2,2}?/'; しかしながら、やはり最長マッチになってしまいます。 うっかり書き忘れたのですが、PHPのpreg_matchで行なっています。 PCRE準拠(Prel互換)らしいです。
834 名前:nobodyさん [2011/11/23(水) 09:52:54.59 ID:V5f5mApl] あ、すみません、できました! が、1行だといけるのですが、複数行にまたがった場合失敗しました。 ↓このような場合 ![[ 文[字]列 ![[別の文字]] ![[ほげほげ]] ]] オプションにmやsを付けてみましたがダメです。
835 名前:nobodyさん mailto:sage [2011/11/24(木) 01:59:39.52 ID:???] >>834 入れ子の対応とりつつマッチするには Subroutine Referencesを使えば良いよ。 <?php $re = '/(?:!\[\[(?:(?!!\[\[)(?!\]\]).|(?R))*\]\])/s'; $text = "![[ 文[字]列 ![[別の文字]] ![[ほげほげ]] ]]"; $position = array(); for ($i = 0; $i < strlen($text); $i++) { $pos = strpos($text, '!', $i); if (end($position) !== $pos) $position[] = $pos; } foreach ($position as $pos) { $t = substr($text, $pos); if (($pos === 0 || $pos) && preg_match_all($re, $t, $match, PREG_SET_ORDER)) { var_dump($pos); var_dump($t); var_dump($match); print "----\n"; } } ?>
836 名前:nobodyさん [2011/11/25(金) 00:51:55.86 ID:7pZprZ8q] >>835 うぉ!?ありがとうございます!
837 名前:nobodyさん mailto:sage [2011/11/25(金) 01:08:56.26 ID:???] >>835 おーこれでいけそうです! なるほど、こんなやり方がありましたか。とても勉強になりました!
838 名前:nobodyさん [2011/11/27(日) 21:48:09.61 ID:ZbhJICcu] jsonの形式を配列に変換することは出来ないでしょうか? phpのjson_decodeだと、どうやら変換エラーが出るようで、正規表現で解決できればと思うのですが。 {"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"6","1":"6","2":"5","3":"5","4":"6"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"yNum":{"0":"5","1":"4","2":"4","3":"5","4":"5"}} を[xType][0]=main,[xType][1]=main・・・・・的な感じなんですが。 どなたかお願いいたします。
839 名前:nobodyさん mailto:sage [2011/11/27(日) 23:58:55.08 ID:???] >>838 json_decodeでエラーが出ないんだけど
840 名前:nobodyさん [2011/11/28(月) 08:12:12.66 ID:NxvSoLFs] >>839 全体はもっと長いのですが...
841 名前:nobodyさん mailto:sage [2011/11/28(月) 11:38:12.26 ID:???] つーかエラーになるようなjsonモドキを吐く方をなんとかしろよ。
842 名前:nobodyさん mailto:sage [2011/11/28(月) 11:51:50.21 ID:???] >>840 なぜエラーの原因を特定しないのですか...
843 名前:nobodyさん mailto:sage [2011/11/28(月) 11:52:31.97 ID:???] あと、json形式でないものを、json形式だと思い込んで正規表現書いても結局うまくいかないとおもう。
844 名前:nobodyさん [2011/11/28(月) 20:38:17.18 ID:cgQZB7ih] {"1":{"0":{"n":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"3","1":"5","2":"5","3":"3","4":"3"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"}, "yNum":{"0":"5","1":"5","2":"3","3":"3","4":"5"}}},"1":{"b":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"5","1":"6","2":"6","3":"5","4":"5"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"}, "yNum":{"0":"5","1":"5","2":"4","3":"4","4":"5"}}},"2":{"l":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"4","1":"5","2":"5","3":"4","4":"4"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"}, "yNum":{"0":"5","1":"5","2":"4","3":"4","4":"5"}}}}} 一応こんな感じのデータです。 json形式だと思うんですが、phpのほうでは Syntax error, malformed JSON とつれない回答です。
845 名前:nobodyさん mailto:sage [2011/11/28(月) 21:06:49.29 ID:???] >>844 デコードできたよ(PHP 5.3.2)
846 名前:nobodyさん [2011/11/28(月) 21:16:33.29 ID:cgQZB7ih] マジっすか?? デコードの仕方が悪いのでしょうか?? できればやり方を教えてください。
847 名前:nobodyさん mailto:sage [2011/11/28(月) 22:13:12.05 ID:???] こうならないためにもどんなデータをどうやったらエラーになったかを書くのが重要なんだけど。
848 名前:nobodyさん mailto:sage [2011/11/28(月) 22:14:25.01 ID:???] 連レスすまんが、>>838 をデコードするのとやり方は変えてないよ。 >>838 はデコードできるんだろうから、環境面かもしれないよ
849 名前:846 [2011/11/28(月) 22:41:14.25 ID:NxvSoLFs] 単純にjavascriptの配列をjsonに変換させてからhidden属性に入力。 それをPOSTで送ったPHPファイルで json_decode($_POST['hidden']) って形でやってます。hiddenで送ること自体が間違い?? それともhiddenを何かに変換しなければいけないの??
850 名前:nobodyさん mailto:sage [2011/11/28(月) 23:04:04.57 ID:???] hidden属性とか$_POST['hidden']とか胡散臭そうなのが混ざってるし。 問題の切り分けの仕方について続けたいなら、くだ質とか、超初心者スレみたいなところでどうぞ
851 名前:nobodyさん [2011/11/29(火) 23:04:45.51 ID:gKGxmzY9] 838は出来たけど、844は出来なかった。 同一ファイル上で変数を入れてみた結果として。
852 名前:nobodyさん [2012/01/01(日) 16:05:26.90 ID:vpch3S2x] 整数の桁数上限なし、小数点以下2位までの少数をマッチさせたいのですがうまくいきません。 str.match(/[0-9]*.[0-9][1-9]/g) どこが間違っているのか教えていただけますでしょうか。 PHP Version 5.2.16です 宜しくお願い致します。
853 名前:nobodyさん mailto:sage [2012/01/01(日) 17:00:46.35 ID:???] それはJavaScriptにしか見えないけど
854 名前:nobodyさん [2012/01/01(日) 18:04:13.68 ID:Zget/7Sh] >>852 本当にPHPだとすれば、あってるところのほうが少ない件 preg_match_all('/[0-9]*\.[0-9][0-9]/'); 1/100の位は積極的にゼロを省かなきゃならないの?[0-9]でよくね? あと、単なる整数とか、小数点以下3位以上の数字をどう扱いたいのかによっても変わってくる。 そもそも実際のところは「PHPで出力するHTMLに書かれたJavaScript」あたりかな?
855 名前: 【大吉】 【1107円】 mailto:sage [2012/01/01(日) 19:46:02.61 ID:???] >>852 マッチさせる文字列が数値のみであれば、 数値判定をした方がいいのでは? 文字であっても強制的に数値に変換する等が可能であれば、 かなり楽です。
856 名前:852 mailto:sage [2012/01/01(日) 23:42:04.11 ID:???] >853,854,855 大変失礼しました。 854さんのおっしゃる通り、「PHPで出力するHTMLに書かれたJavaScript」でした。 その理解すら不十分でした。申し訳ございませんでした。
857 名前:nobodyさん mailto:sage [2012/01/02(月) 17:24:24.78 ID:???] >>852 // 1 of 2 // 例として円周率pi var value = "3.1415926"; var target = value; // 小数部が無ければ、追加する if (target.indexOf(".") < 0) { target = target.concat(".00"); } var integral_part_1 = 0; if (target > 0){ integral_part_1 = Math.floor(target); }else{ integral_part_1 = Math.ceil(target); } //document.write(value," の整数部は ", integral_part_1, "<br>");
858 名前:nobodyさん mailto:sage [2012/01/02(月) 17:25:16.42 ID:???] >>852 // 2 of 2 // 小数第1位を取得 target = target - integral_part_1; target = target * 10; var integral_part_2 = 0; if (target > 0){ integral_part_2 = Math.floor(target); }else{ integral_part_2 = Math.ceil(target); } //document.write(value," の小数第1位部分は ", integral_part_2, "<br>"); // 小数第2位を取得 target = target - integral_part_2; target = target * 10; var integral_part_3 = 0; if (target > 0){ integral_part_3 = Math.floor(target); }else{ integral_part_3 = Math.ceil(target); } document.write(value," の小数第2位部分は ", integral_part_3, "<br>");
859 名前:nobodyさん [2012/01/06(金) 21:48:56.02 ID:b1y0AA6H] ここの皆さんのレベルでは簡単すぎるのかもわかりませんが教えてください Firefoxブラウザのスクリプトで「Google Reader NG Filter」というものがあります これはRSS文中に特定のキーワードが一致していれば自動的に削除するものです サンプルとしてADとPRを消す正規表現がはじめから入っています ^\W?(?:ADV?|PR)\b こういうものです 先頭にADやPRがあれば広告を見なくてもすむわけです これを応用して見たくないキーワードが含まれているものを消すべく 自分なりに試行錯誤しているのですが上手くいきません 文中のキーワードなので当然^は不要ですし、正規表現のサイトで勉強して改変しても 動かないのです iPhoneとAndroidというキーワードが含まれていたら削除するという表現をお願いします
860 名前:nobodyさん [2012/01/06(金) 23:01:27.07 ID:pwr91DzE] (?:iPhone|Android)でいいだろ。 上記にマッチした上で、本文を削除する部分もサンプルからコピペしないとダメだぞ。
861 名前:nobodyさん mailto:sage [2012/01/06(金) 23:25:15.04 ID:???] .*(iPhone|Android).*
862 名前:nobodyさん mailto:sage [2012/01/06(金) 23:26:11.05 ID:???] >>860 それやったけど、ダメでした… 普通はこれにしますよね
863 名前:nobodyさん [2012/01/07(土) 00:03:18.47 ID:n5aAiFGN] >>862 いや少なくとも>>860 の正規表現はマッチするはずなので、たとえば 1. マッチさせる対象が本文ではなくタイトルになっている 2. 削除する処理がどうにかなっている 3. その他
864 名前:nobodyさん mailto:sage [2012/01/07(土) 00:05:14.52 ID:???] >>859 これか userscripts.org/scripts/show/67840 親ルール,URL,他の条件にマッチしてないんじゃないか? あと、大文字小文字をチェックしているとか
865 名前:nobodyさん mailto:sage [2012/01/07(土) 00:56:55.41 ID:???] >ここの皆さんのレベルでは簡単すぎるのかもわかりませんが教えてください こんな枕詞はいらん。
866 名前:nobodyさん [2012/01/13(金) 15:32:24.50 ID:QW0sWV6a] <a href="example.com/aaa.jpg "><img src="examle.com/bbb.jpg "></a> これで<a hrefがない場合に限り<img srcにマッチさせてURIを取得するにはどうすればいい? preg_match_all('/(?:(?(?=<a href)|src))="([^"]+)/si', $html, $m); だと<a hrefがあるときは<a hrefの部分は何もマッチしなくてsrcの方がマッチするみたい
867 名前:nobodyさん mailto:sage [2012/01/13(金) 21:09:54.88 ID:???] まず<a hrefがないというのが何処にないのか、土台をはっきりさせないと
868 名前:nobodyさん mailto:sage [2012/01/14(土) 00:24:14.06 ID:???] >>866 preg_match_all('|<img src="([^"]*)">(?!</a>)|')
869 名前:nobodyさん mailto:sage [2012/01/15(日) 00:11:37.39 ID:???] >>866 xhtmlが想定できるなら、正規表現よりxpath使った方が良いよ。 php.netにある例を改変すれば、$stringに文書が文字列化されてるとして、 $xml = new SimpleXMLElement($string); $result = $xml->xpath('//img[name(..)!="a"]/@src'); while(list( , $node) = each($result)) { echo $node,"\n"; } この場合だと親要素がaではないimg要素のsrc属性ってことが 直接表現できるからね。
870 名前:nobodyさん mailto:sage [2012/02/04(土) 12:29:11.76 ID:???] こちらのスレッドにはじめて投降します。よろしくお願いします。 ・使用言語:java ・質問内容:漢字を余すことなく拾いたい。 ※漢字を拾い出す正規表現をネットで調べていたのですが、 なにが新しくて、なにが不十分で、なにが正解なのかわからなくなってしまいました。
871 名前:nobodyさん mailto:sage [2012/02/04(土) 18:34:56.81 ID:???] 漢字以外
872 名前:nobodyさん mailto:sage [2012/02/04(土) 20:48:16.26 ID:???] [\p{InCJKUnifiedIdeographs} こういうのをみつけたのですが、これで網羅されているのでしょうか。
873 名前:nobodyさん mailto:sage [2012/02/05(日) 12:00:52.66 ID:???] code.cside.com/3rdpage/jp/utf-8/indexEastAsian.html ここらを見て漢字の含まれているグループを加えたらいいんじゃないかしら。拾っては困る文字があるなら 拾いたい漢字のコードポイントを列挙するしかないんじゃないかしら 「ああもう面倒 ! Unicodeに含まれる日本語で使われている漢字だけを拾う正規表現をここに書いてくんろ !」って ことなら答えてもらえないと思うぞw
874 名前:nobodyさん mailto:sage [2012/02/05(日) 13:17:26.57 ID:???] >>873 面倒。。。という意味ではなく、漢字を含む文章を取り上げる正規表現を探していたのですが、 調べれば調べるほど種類があり、何を明記すれば過不足なく満足な結果を得られるのか分からなくなったので 質問した次第です。
875 名前:nobodyさん mailto:sage [2012/02/05(日) 13:35:14.15 ID:???] >>870 JIS X 0208またはJIS X 0213準拠の漢字コードでいいんじゃない? JIS X 0208準拠なら charset.7jp.net/unicode2.html にあったよ。
876 名前:nobodyさん mailto:sage [2012/02/05(日) 17:49:14.26 ID:???] >>875 ありがとうございます。[亜-腕弌-熙]に加えて[\-K]もあるようですが、 \p{InCJKUnifiedIdeographs} または[一-龠]とは比べて量が異なるのか否か 使ってはいけないのかどうなのか、教えていただけると嬉しいです。 ちなみにwindows7、Microsoft(R) Office IME 2007 辞書ツール を使っています。
877 名前:nobodyさん mailto:sage [2012/02/05(日) 19:33:01.78 ID:???] >>876 コード表から検索すればすぐわかると思うんだけど…。 "一" で検索すれば 4e00 にあり、"龠" で検索すれば 9fa0 にあることがわかる。 \p{InCJKUnifiedIdeographs} は実装に依存するからJavaの仕様書を読んで、としか。 使ってはいけない、なんて判断指標もなしに判断できるわけがない。
878 名前:nobodyさん mailto:sage [2012/02/05(日) 19:41:04.69 ID:???] "JavaTM Platform Standard Ed. 6" には \p{InCJKUnifiedIdeographs} がないね。 java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html
879 名前:nobodyさん mailto:sage [2012/02/05(日) 20:32:59.67 ID:???] >>877 >>878 返答、誠にありがとうございました。 自分の出した結論としては、\p{InCJKUnifiedIdeographs}がクラス Patternにはないこと、 亜は4E9C、Kは9ED1にあり、一と龠の位置よりも狭いことから(並びの順序が違うので一概には言えませんが)、 [一-龠]を使うのが一番妥当と判断しました。 皆様、本当にありがとうございました。
880 名前:nobodyさん mailto:sage [2012/02/17(金) 21:31:06.69 ID:???] 質問です。ABCDEと5つの文字があり、複数の文中・文末に点在しています。 文中・文末にあるABCDEをマッチさせる正規表現を教えてください。 文頭はのぞきたいです。 ネットで調べたりしたのですが、どの言葉を用いると自分の要求する答えが 見つかるのか分からなかったので書き込みしました。 また自分で調べるためにも自己解決できるようなHPを教えていただけると嬉しいです。 よろしくお願いします。 JAVAを用いています。
881 名前:nobodyさん mailto:sage [2012/02/18(土) 01:29:01.30 ID:???] >>880 文頭は ^ か \n マルチラインモードで動作しているかによって変わる
882 名前:nobodyさん mailto:sage [2012/02/18(土) 07:45:28.55 ID:???] >>881 マルチラインモードONだと思います。 それぞれの文章ごとに適用したいと思っています。 追記なのですが、 ABCDEが含まれていない文章も除きたいと考えています。 よろしくお願いします。
883 名前:nobodyさん mailto:sage [2012/02/18(土) 10:11:57.59 ID:???] >>882 もう答えは出ていると思うんだが…。 否定先読みと ^ を組み合わせればいい。 URLは>>878
884 名前:nobodyさん mailto:sage [2012/02/18(土) 10:58:37.64 ID:???] >>883 ありがとうございました。
885 名前:nobodyさん mailto:sage [2012/02/22(水) 10:20:21.24 ID:???] 質問です。javaをしようしています。 ひらがな・カタカナ・アルファベット・記号で、連続ではない必ずまじりあった4文字以上の文章 を抜き出す正規表現を教えて頂けないでしょうか。よろしくお願いします。
886 名前:nobodyさん mailto:sage [2012/02/22(水) 22:58:11.24 ID:???] 連続ではないまじりあった状態がどういうことなんだろう。 その4種を用いていればまじりあいそうな。 あアs# はどうなの。
887 名前:nobodyさん mailto:sage [2012/02/22(水) 23:26:26.77 ID:???] >>886 連続ではない必ず混じりあった4文字以上の文章とは 「ああああ」「アアアア」「aaaa」「◎◎◎◎」等連続した文章ではなく 「あアアa」とか「aaaの」とか「◎あアア」等の文章のことです。 分かりづらくすいません。
888 名前:nobodyさん mailto:sage [2012/02/22(水) 23:50:16.43 ID:???] >>887 それだけじゃ分かりにくい 例えば「アあアa」はどうなんの?
889 名前:nobodyさん mailto:sage [2012/02/22(水) 23:59:54.01 ID:???] >>888 「ひらがなだけ」「カタカナだけ」「アルファベットだけ」「記号だけ」の文章ではないのでマッチします。 「あいうえお」はひらがなが連続しているのでマッチしないようにお願いします。
890 名前:nobodyさん mailto:sage [2012/02/23(木) 00:39:32.26 ID:???] >>889 こんな感じ? ^(?:[a-zA-Zぁ-ゞァ-ヾ、-◯].{4,}|[a-zA-Zぁ-ゞァ-ヾ].{4,}|[a-zA-Zぁ-ゞ].{4,}|[ぁ-ゞァ-ヾ、-◯].{4,}|[ぁ-ゞァ-ヾ].{4,}|[ァ-ヾ、-◯].{4,})$
891 名前:nobodyさん mailto:sage [2012/02/23(木) 00:45:45.26 ID:???] >>890 表現していただき、本当にありがとうございました。 さっそく活用したいと思います。感謝します。
892 名前:nobodyさん mailto:sage [2012/02/23(木) 01:57:09.70 ID:???] >>891 ごめん890は流してくれ なんか頓珍漢なこと書いてたわ
893 名前:nobodyさん mailto:sage [2012/02/23(木) 02:20:18.23 ID:???] >>892 いえいえ、謝られることなんて。
894 名前:nobodyさん mailto:sage [2012/02/23(木) 09:38:55.66 ID:???] 1つの文字種だけでないならどこかに異なる2つの文字種が並ぶところがある筈 なので、あとは4文字以上の条件を満たすにはその並ぶところの前に2文字以上 あるか、前と後ろに1文字以上ずつあるか、後ろに2文字以上あるかのいずれか である。 文字クラスをいちいち書くのはだるいのであ,ア,a,○で代表させると [あアa○]{2,}あア[あアa○]* みたいのを真ん中の文字種の順列×前と後ろの繰り返し数のパターン分だけ つくって|で並べればOK
895 名前:nobodyさん mailto:sage [2012/02/23(木) 10:34:55.79 ID:???] >>894 「[あアa○]{2,}あア[あアa○]*」の真ん中の「あア」の部分を 「あア」「あa」「あ○」「アあ」「アa」「ア○」「aあ」「aア」「a○」 「○あ」「○ア」「○a」の12通り作って|で並べると解釈しましたがよろしかったでしょうか。 制作本当にありがとうございました。
896 名前:nobodyさん mailto:sage [2012/02/23(木) 12:00:24.74 ID:???] さらに前後の繰り返し数の場合わけで [あアa○]{2,}あア[あアa○]* [あアa○]{1,}あア[あアa○]{1,} [あアa○]*あア[あアa○]{2,} … も必要だから12×3=36通り作って並べる
897 名前:nobodyさん mailto:sage [2012/02/23(木) 12:03:30.20 ID:???] 真ん中だけ違うんだから [あアa○]{2,}(あア|あa|….)[あアa○]* [あアa○]{1,}(あア|あa|….)[あアa○]{1,} [あアa○]*(あア|あa|….)[あアa○]{2,} とした方が楽だな
898 名前:nobodyさん mailto:sage [2012/02/23(木) 14:37:23.71 ID:???] >>896 >>897 さま 追加補足ありがとうございます!
899 名前:nobodyさん mailto:sage [2012/02/23(木) 17:00:23.37 ID:???] PHP:5.3です。 URLの置換の質問です。 (preg_replace()でやるつもり) ttp://aa.com/index.php?(適当な文字列) 複数あり を ttp://aa.com/index.html のようにしたいのですが、どのような正規表現を使ったらいいでしょうか? よろしくお願いします。
900 名前:nobodyさん mailto:sage [2012/02/23(木) 21:26:51.99 ID:???] >>899 検索対象 index\.php[\?]+.+$ 置換文字列 index.html URLに含まれるphpファイルが複数存在する場合、GET変数(?以降の文字列)を強制的に除去したい場合 ただし、文中のあらゆる「?」から始まる単語が検索対象となってしまう。 検索対象 [\?]+.+$ 置換文字列 index.html
901 名前:nobodyさん mailto:sage [2012/02/26(日) 21:16:58.77 ID:???] javascriptです。 検索文字列が"manga_index[0-9]+\.html"と"manga_ban_index[0-9]+\.html" (例:manga_index52342.htmlとmanga_ban_index2.htmlでヒット) manga_index[0-9]+\.htmlの場合はmanga_ban_index[0-9]+\.htmlとban_を追加し manga_ban_index[0-9]+\.htmlの場合はmanga_ban_index[0-9]+\.htmlとそのままにしたいのですがどうすればいいのでしょうか?
902 名前:nobodyさん mailto:sage [2012/02/27(月) 16:13:34.47 ID:???] manga_index を manga_ban_index に置換すればいいんじゃないの
903 名前:nobodyさん mailto:sage [2012/02/29(水) 06:23:11.44 ID:???] 使用言語問わず(?:foo|bar)と(foo|bar)の違いが判りません 自分が読むスクリプト言語の参考書では特に注釈もなしにfooかbarかどちらかに当てはまるものは(?:foo|bar)と書かれますが 初心者向けの正規表現についてのサンプルなど見ると(foo|bar)が多い気がします どういう違いなのでしょう?初歩的な質問ですがよろしくお願いします
904 名前:nobodyさん mailto:sage [2012/02/29(水) 14:42:57.64 ID:???] >>903 ()で囲むとあとから\1などで参照できます。 (?:)とするとその参照を切ることができます。 ()でグループ分けをしたいけど参照はしない、というときにその設定をすると無駄がなくなります。
905 名前:nobodyさん mailto:sage [2012/03/01(木) 17:23:10.26 ID:???] >>904 今までよくわからないで()を使っていたので これからはもっと良いものが書けそうです、ありがとうございます
906 名前:nobodyさん mailto:sage [2012/03/05(月) 00:36:21.70 ID:???] phpの正規表現で、特殊文字、こんなの→(?????)を区別したいんですが、どうすればよいでしょうか。 ざっくりした質問ですので、参考になるサイトを教えてくださる程度でも構いません。
907 名前:906 mailto:sage [2012/03/05(月) 00:47:40.35 ID:???] 文字化けしてますね。すみません。 特殊文字というのは、ミリとかリットルとか、特殊顔文字(読み方がわかりません。ハートとか。)で使われるものです。
908 名前:nobodyさん mailto:sage [2012/03/05(月) 01:55:25.02 ID:???] >>906 UTF-8で
909 名前:nobodyさん mailto:sage [2012/03/05(月) 09:22:56.91 ID:???] 全部並べて文字クラスにすりゃいいだろ。正規表現以前の問題だな。
910 名前:nobodyさん mailto:sage [2012/03/10(土) 02:43:47.72 ID:???] 479 名前:nobodyさん[] 投稿日:2012/03/10(土) 02:34:43.14 ID:/aJUja8G 文字列の正規表現で 「数値と英語と . と / と hoge 以外にマッチ」 というのをやりたいのですがどうも失敗してしまいます。一発での解決方法とかあるのでしょうか? \Dやったあとまた\Wでマッチング、その後ドットでマッチングと物凄く効率悪い方法しか思いつかなかったのですが
911 名前:nobodyさん mailto:sage [2012/03/10(土) 02:56:04.76 ID:???] 裏を返せば「数値か英語か . か / か hoge にマッチ」 したらnotマッチ
912 名前:nobodyさん mailto:sage [2012/03/10(土) 03:17:32.46 ID:???] >>911 貼ったの自分じゃないですがありがとうございます! そういう考え方でいけばいいんですね
913 名前:nobodyさん [2012/03/20(火) 19:40:54.01 ID:Z+BjIxhL] javaの表現方法で Bがあれば削除、ただし直前がAなら削除しない、かつB単体でも削除 という表現方法はありますか? ^[A]Bだと全体で2文字あることが前提のように解釈していますが間違っていますでしょうか。
914 名前:nobodyさん mailto:sage [2012/03/20(火) 19:59:11.06 ID:???] >>913 [^A]?Bかな
915 名前:nobodyさん [2012/03/20(火) 20:10:18.04 ID:Z+BjIxhL] >>914 マッチしました。ありがとうございます。
916 名前:nobodyさん mailto:sage [2012/03/21(水) 02:09:27.32 ID:???] [^A] ↑ 少し横向きの人が答えてるようで和んだ
917 名前:nobodyさん mailto:sage [2012/03/21(水) 12:29:51.49 ID:???] ああ、なるほど。と思ったけど ?があるから「はあ?」って言われてるとこ想像してしまい凹んだ [^A]?
918 名前:nobodyさん mailto:sage [2012/03/26(月) 23:29:49.84 ID:???] 「あいうえお」のいずれかが3回以上連続したらマッチってどうやればいいんでしょう? [あいうえお]{3,}だと「あいう」とかにもマッチしちゃって駄目だった。
919 名前:nobodyさん mailto:sage [2012/03/26(月) 23:37:31.05 ID:???] >>918 ([あいうえお])\1{2,}
920 名前:nobodyさん mailto:sage [2012/03/26(月) 23:41:15.88 ID:???] >>919 ありがとうございます! 解決してすっきりしました。
921 名前:nobodyさん mailto:sage [2012/03/28(水) 18:04:07.49 ID:???] すいません・・・。 >>913->>917 の件にて、結果的にどのように表現すればよい結論になったのでしょうか。
922 名前:nobodyさん mailto:sage [2012/03/28(水) 18:26:58.68 ID:???] >>914 だろ
923 名前:nobodyさん mailto:sage [2012/03/28(水) 18:57:52.69 ID:???] >>921 >>916 と>>917 は顔文字みたいって言ってるだけやんw
924 名前:nobodyさん mailto:sage [2012/03/28(水) 18:59:57.97 ID:???] >>922 >>923 ありがとうございます。 横向きの人、というのが理解できず失礼しました^^;
925 名前:nobodyさん [2012/03/29(木) 12:43:34.53 ID:UbmjoR9L] 元テキスト: https://www.google.co.jp/search?hl=ja&safe=off&site=&source=hp&q=test&oq=test&aq=f&aqi=g10&aql=&gs_l=hp.3..0l10.1783l3806l0l4057l7l7l0l0l0l0l145l766l2j5l7l0.frgbld. https://www.google.co.jp/search?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=n8BzT-uaHqaimQWZweD8Bw&biw=1064&bih=964&sei=ocBzT4e7FqOimQWq3IH5Bw https://www.google.co.jp/search?q=test&hl=ja&safe=off&prmd=imvnsz&source=lnms&tbm=nws&ei=18lzT6GLE_HTmAXK8N2CCA&sa=X&oi=mode_link&ct=mode&cd=5&ved=0CBsQ_AUoBA&biw=1064&bih=931 maps.google.co.jp/maps?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&biw=1064&bih=964&ie=UTF-8&sa=N&tab=il C#: using System.Text.RegularExpressions; text = Regex.Replace(text, @"(https?://[a-z.]+\.google\.[a-z.]+/[a-z]+\?).*?(q=[^&]*).*?(&tbm=[^&]*)?[a-zA-Z0-9-_./~*%$@:;,!?&=+#]*", "$1$2$3"); GoogleのURLをシンプル化したいのですが、上記コードだと「(&tbm=[^&]*)?」の部分が拾えません。 最後の?を取ると&tbmを含まないクエリでマッチしなくなります。 どうしたらいいでしょうか。
926 名前:925 [2012/03/29(木) 19:25:30.17 ID:UbmjoR9L] >>925 の問題を解決しつつ、少し進展しました。 text: https://www.google.co.jp/search?hl=ja&safe=off&site=&source=hp&q=test&oq=test&aq=f&aqi=g10&aql=&gs_l=hp.3..0l10.1783l3806l0l4057l7l7l0l0l0l0l145l766l2j5l7l0.frgbld. https://www.google.co.jp/search?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=n8BzT-uaHqaimQWZweD8Bw&biw=1064&bih=964&sei=ocBzT4e7FqOimQWq3IH5Bw https://www.google.co.jp/search?tbm=isch&hl=ja&source=hp&biw=1064&bih=931&q=test&gbv=2&oq=test&aq=f&aqi=g9g-r1&aql=&gs_l=img.3..0l9j0i4.2370l3015l0l3824l4l4l0l0l0l0l111l406l2j2l4l0.frgbld. https://www.google.co.jp/search?q=test&hl=ja&safe=off&prmd=imvnsz&source=lnms&tbm=nws&ei=18lzT6GLE_HTmAXK8N2CCA&sa=X&oi=mode_link&ct=mode&cd=5&ved=0CBsQ_AUoBA&biw=1064&bih=931 maps.google.co.jp/maps?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&biw=1064&bih=964&ie=UTF-8&sa=N&tab=il C#: text = Regex.Replace(text, @"(https?://[a-z.]+\.google\.[a-z.]+/[a-z]+)(?=.*[?&](q=[^&\s]*))(?=.*[?&](tbm=[^&\s]*))?[a-zA-Z0-9-_./~*%$@:;,!?&=+#]*", "$1?$2&$3"); やりたいこと: googleのURLのうち、「q=」と「tbm=」の2種類の変数だけ取り出して残りを削ぎ落とす。 ただし、q/tbmの登場は順不同にも対応する。 困っていること: 「tbm=」がないURLでも、置換の第3引数に「&$3」を付けているために「&」だけ付いてしまう。 三項演算子で ("$3"=="")?"":"&$3" とかやろうとしたけど最初の"$3"を展開してくれないようで挫折。 1行追加して、「最後に&だけが付いてたら取り除く」しかないでしょうか。
927 名前:nobodyさん mailto:sage [2012/03/29(木) 20:25:45.43 ID:???] なんか大変そうだなぁ。 俺なら?で分割して、2個になったら2個目を&で分割して、q=とtbm=を取り出して終わるわ
928 名前:nobodyさん mailto:sage [2012/03/30(金) 00:45:36.69 ID:???] 素直にライブラリ使った方が。 see HttpUtility.ParseQueryString()
929 名前:925 [2012/03/30(金) 13:55:15.20 ID:Wpf4JXLP] >>927-928 の言うとおりという気もしてきましたが、どうやら上手くいったのでご報告します。 C#: text = Regex.Replace(text, @"(https?://[a-z.]+\.google\.[a-z.]+/[a-z]+)(?(?=\?tbm=)(\?(tbm=[^&\s]*).*?(&q=[^&\s]*))|((?=.*?[?&](q=[^&\s]*))(?=.*?(&tbm=[^&\s]*))?))[a-zA-Z0-9-_./~*%$@:;,!?&=+#]*", "$1?$2$3$5$6"); キャプチャ結果ではなく正規表現のほうに条件式を入れてどうにかできました。 ただし条件が複雑になると書き方がどんどん煩雑になるので拡張性はないかもしれません。 あと、どうも条件式をくくった部分で$4と$7をキャプチャ(両方とも常に空)しているようですが、 そこに(?:を足すと入れ子のカッコ内が全部キャプチャされなくなってしまったので、とりあえずこのまま。
930 名前:nobodyさん mailto:sage [2012/03/30(金) 17:40:03.01 ID:???] 正規表現でがんばらなければだめな理由があるに違いないとそっと放置されるコード片が今まさに生まれたのである。
931 名前:nobodyさん [2012/04/12(木) 15:38:18.00 ID:nr7fN3uJ] 個人の小さいメールマガジンスタンドをやっているのですが 秀丸エディタの正規表現を利用して帰ってきたエラーメールリストから アドレスだけを抜き出したいのですがどうすればいいでしょうか? 具体的には --------------------------- メールヘッダー <abcdefghijklmno@ezweb.ne.jp> --------------------------- というテキストがあって <abcdefghijklmno@ezweb.ne.jp>の部分の abcdefghijklmno@ezweb.ne.jpのみを取り出したいと思っています よろしくお願い致します
932 名前:nobodyさん mailto:sage [2012/04/13(金) 14:15:11.85 ID:???] anago.2ch.net/test/read.cgi/software/1331567709/162-164
933 名前:nobodyさん mailto:sage [2012/04/16(月) 12:27:42.62 ID:???] >>931 秀丸の正規表現スタイル判らないけど、 エディタの検索欄で特定の場所だけ抜き出すって結構大変だよ。 いっそ、perl、php、javascriptで書いた方が良いと思う
934 名前:ゼッケン774さん@ラストコール [2012/05/09(水) 21:57:54.68 ID:BzXqVbz5] 不明
935 名前:nobodyさん [2012/05/10(木) 11:31:59.11 ID:uA0oypVx] 質問です。javaを使用しています。 (?:[\((][一-龠]+[\))]*) という正規表現をした際、括弧内にひらがなが含まれてしまうのですが、 含まれない漢字のみ括弧内に存在する表現方法を教えていただけないでしょうか。 お願いします。
936 名前:nobodyさん mailto:sage [2012/05/12(土) 18:10:34.44 ID:???] [\((](?!.*[ぁ-んァ-ヶヲ-゚0-9a-zA-Za-zA-Z0-9])はどうだろう。 しかし、「(笑)www」とかだめだよなあ。
937 名前:nobodyさん mailto:sage [2012/05/13(日) 01:45:46.19 ID:???] 誘導されて来たんですけど、 こんなスレあったのね。