[過去ログ]
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g (989レス)
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g http://tamae.5ch.net/test/read.cgi/php/1069245758/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
760: 759 [sage] 04/10/12 01:34:03 ID:??? ああ、そうか。 [顔文字]♪ のパターンが良くないのね。 今まで ♪[顔文字] でやってたから気づかなかった。 言い訳だけど、具体的にどういうパターンがダメなのか書いてほしかったな。 http://tamae.5ch.net/test/read.cgi/php/1069245758/760
761: 759 [sage] 04/10/12 03:17:53 ID:??? [\xf3-\xf7][\x40-\xfc]は絵文字の文字コードってことで良いかな。 sjisの漢字の範囲は[\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC]じゃない? てなわけで、とりあえずこれ。 /($sjis)([\xf3-\xf7][\x40-\xfc])/e でも、これでは絵文字が連続した場合は変換できない。 やはり、どこが1バイト目か2バイト目か分かるように、 あらかじめ明確に文字を区切らなきゃいけないっぽい。 $text = preg_replace("/($sjis)/", "$1 ", $text); $text = preg_replace("/([\xf3-\xf7][\x40-\xfc])\s/e", "'['.bin2hex(\\1).'] '", $text); こんな感じにすれば確実。もっといい方法あれば良いんだけど。 PHPはやったことないので、細かい間違いはご容赦・・・。 http://tamae.5ch.net/test/read.cgi/php/1069245758/761
762: nobodyさん [] 04/10/12 14:09:22 ID:oX6FVXHm 正規表現のプロの方々のお力をお借りしたく、質問をさせてください。 perl のマッチングで文章中の全角数字を的確に取得したいのですが、 どうにもこうにも化けてしまいます。 $value = "もしかして762はバカ?"; if($value =~ /([0123456789]*)/){ $match = $1 ; print "$match \n"; #←「・」となってちゃんと取得できてない } 環境: Perl5 (ActivePerl) Win2k 文字コードはSJISで。 どうすればよいのでしょうか・・・ http://tamae.5ch.net/test/read.cgi/php/1069245758/762
763: nobodyさん [sage] 04/10/12 14:22:00 ID:??? >>762 http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm http://tamae.5ch.net/test/read.cgi/php/1069245758/763
764: nobodyさん [sage] 04/10/12 14:39:46 ID:??? とりあえずこんな感じで対処できたようです・・・見苦しい感じですが $value = "実は764は変態?"; if($value =~ /(\x82[\x4F-\x58]\x82[\x4F-\x58]\x82[\x4F-\x58]|\x82[\x4F-\x58]\x82[\x4F-\x58]|\x82[\x4F-\x58])/){ $match = $1 ; print "$match \n"; } ありがとうございました。 http://tamae.5ch.net/test/read.cgi/php/1069245758/764
765: 759 [sage] 04/10/12 14:52:38 ID:??? 漏れならこうだな。 /((?:\x82[\x4F-\x58])+)/ http://tamae.5ch.net/test/read.cgi/php/1069245758/765
766: nobodyさん [sage] 04/10/12 20:54:11 ID:??? Shift_JISか。。。 http://tamae.5ch.net/test/read.cgi/php/1069245758/766
767: 758 [] 04/10/12 22:55:44 ID:c8Tbm8wX >>759 レスありがとうございます。 ちょっと質問がわかりにくくてすみません。 具体例を出すと、以下のような感じです。 $sjis='[\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]'; $text="今日はカレーだ♪るんるん♪"; $text=preg_replace("/((?:$sjis)*?)([\xf3-\xf7][\x40-\xfc])/e","'\\1['.bin2hex('\\2').']'",$text); print $text; // ← '今日はカレーだーf482]驍るん' それで、昨日からいろいろ試したところ、 $text=preg_replace("/\G((?:$sjis)*?)([\xf3-\xf7][\x40-\xfc])/e","'\\1['.bin2hex('\\2').']'",$text); とすることで、ウチの環境では解決しました。 ですが、レン鯖(PHP 4.0.6)ではEZweb絵文字に全くマッチしなくなりました・・・orz どなたかアドバイスよろしくお願いします。 もしPHP固有の問題であるなら該当スレに移動します。 http://tamae.5ch.net/test/read.cgi/php/1069245758/767
768: 758 [sage] 04/10/12 23:07:38 ID:??? あ、書き忘れていました orz >>761で教えていただいた方法ですが、 $text="今日はカレーだ♪るんるん♪マ"; // 最後の文字は SJISコードF6CFの絵文字 $text = preg_replace("/($sjis)/", "\\1 ", $text); $text = preg_replace("/([\xf3-\xf7][\x40-\xfc])\s/e", "'['.bin2hex(\\1).']'", $text); print $text; // ←'今 日 は カ レ ー だ ♪ る ん る ん ♪ [f6cf]' となって、文字ごとにスペースが入ってしまい、 そうかと言って 2行目を $text = preg_replace("/($sjis)/", "\\1", $text); に変えたら '今日はカレーだ♪るんるん♪マ'(変化無し)という状況です・・・。 http://tamae.5ch.net/test/read.cgi/php/1069245758/768
769: nobodyさん [sage] 04/10/13 19:34:15 ID:??? ダブルコーテーションの内側にある"を全て\"にエスケープするには、どのように置換すればよろしいでしょうか? $text = '$a = "foo"bar"; $b = "hoge"huga"hage";'; これを'$a = "foo\"bar"; $b = "hoge\"huga\"hage";'にしたいです。 http://tamae.5ch.net/test/read.cgi/php/1069245758/769
770: nobodyさん [sage] 04/10/13 19:50:38 ID:??? >>769 無理。というか無茶。 「ダブルコーテーションの内側」の文字列や $text 全体に、 何か一定の制限や特性があるならなんとかできなくもないかも知れないけど。 http://tamae.5ch.net/test/read.cgi/php/1069245758/770
771: nobodyさん [sage] 04/10/13 20:05:36 ID:??? 前にスペースある"と後ろにセミコロンがある"を除いたすべての"をエスケープするという方法でもいいのですが。 http://tamae.5ch.net/test/read.cgi/php/1069245758/771
772: nobodyさん [sage] 04/10/13 20:10:59 ID:??? >>771 Perl なら $text =~ s{\x20"(.*?)";}{ (my $str = $1) =~ s/"/\\"/g; qq|\x20"$str";| }eg; http://tamae.5ch.net/test/read.cgi/php/1069245758/772
773: nobodyさん [sage] 04/10/13 20:14:38 ID:??? もしくは $text =~ s{(?<=\x20")(.*?)(?=";)}{ (my $str = $1) =~ s/"/\\"/g; $str }eg; http://tamae.5ch.net/test/read.cgi/php/1069245758/773
774: nobodyさん [sage] 04/10/13 20:48:20 ID:??? 772-773 サンクス。とりあえずそれでできましたが、 $text = '$a = "foo";bar";'; みたいなケースも考えるときついですね。 とりあえず、出直してきます。 http://tamae.5ch.net/test/read.cgi/php/1069245758/774
775: nobodyさん [sage] 04/10/14 02:46:56 ID:??? >>758 1.sjis-winをutf8にする 2.utf8はsjisやeucのような途中マッチが起こらない 3.そのためにはソースもutf8で書いた方がよい 4.utf8でezweb文字列の正規表現を書く うまくできたらソース晒してね http://tamae.5ch.net/test/read.cgi/php/1069245758/775
776: nobodyさん [sage] 04/10/14 04:01:33 ID:??? >>775 4. がうまくできるとは到底思えないのだが。 ていうか単に煽ってるだけか? http://tamae.5ch.net/test/read.cgi/php/1069245758/776
777: nobodyさん [sage] 04/10/14 07:09:58 ID:??? 別に普通に出来るだろ "\xF6\xCF" -> "\xEE\x93\xB6" http://tamae.5ch.net/test/read.cgi/php/1069245758/777
778: 776 [sage] 04/10/14 14:00:36 ID:??? >>777 調べてみたら、 - EZweb の絵文字は Shift_JIS のユーザ定義領域を使っていて、 - Shift_JIS のユーザ定義領域は Unicode との対応が定義されている なので、ちゃんと相互変換もできるし問題ないということなのかな。 漏れが無知だったようだ。すまん。 http://tamae.5ch.net/test/read.cgi/php/1069245758/778
779: nobodyさん [sage] 04/10/16 19:49:17 ID:??? 550から999までというのはどういう風に書けばよろしいでしょうか? http://tamae.5ch.net/test/read.cgi/php/1069245758/779
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 210 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s