1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY] 【正規表現道場の掟】 ・言語不問 ・質問も大歓迎。使用言語を書くのを忘れずに。 正規表現と関係ない話・質問は他スレへどうぞ。
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で書いた方が良いと思う