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