[過去ログ]
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g (989レス)
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g http://tamae.5ch.net/test/read.cgi/php/1069245758/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
748: nobodyさん [sage] 04/10/03 05:14:58 ID:??? eregはPosix拡張、pregはPerl拡張。 http://tamae.5ch.net/test/read.cgi/php/1069245758/748
749: nobodyさん [sage] 04/10/03 05:29:07 ID:??? 正規表現ライブラリがちがううんだよ。PHPマニュアルにも書いてあるが、 例によって>>1の正規表現メモんとこ参照すると分かりやすい。 http://tamae.5ch.net/test/read.cgi/php/1069245758/749
750: nobodyさん [sage] 04/10/03 22:20:30 ID:??? あるシステムの独自タグをあつかっています。 <XXXX Name = Test1 number = 1 value1 = "テスト" value2 = "テスト\"ああ\"" value3="テスト3 \t test"> </XXXX> という具合に、<XXXX で始まるタグの中にかかれた各属性と値をそれぞれ分割したいのです。最初、Javaプログラムで頑張って書いていましたが、 へたれな自分のプログラムが長くなってしまいバグも所々に…。くせものが属性と値の表記で、valueというキーの値がaaaa としても、 value = aaaa の場合 value = "aaaa" の場合で異なる値にしたい(" がポイント) value=aaaa や、途中で改行やタブが入る、 value= aaaa といった場合もあります。 値の中に、ダブルクォーテーションが入る場合やスペースが入った場合を考慮してJavaプログラムで何とかしようと思ってましたがスパゲッティ状態です。 正規表現でエイヤっと属性名と値で分割させたいのですが、、、>>1のサンプルをあさってますが、もし、何か良いモノ知っていましたら教えてください。 http://tamae.5ch.net/test/read.cgi/php/1069245758/750
751: 750 [] 04/10/03 22:21:42 ID:au5XkXk9 ageときます。スマン http://tamae.5ch.net/test/read.cgi/php/1069245758/751
752: nobodyさん [sage] 04/10/04 01:59:41 ID:??? >>750 その独自タグの仕様をはっきりさせなければ誰もわからんよ。 「=」の隣にスペースが入っていたりダブルクォートでくくっていたり いなかったりしてるし。 http://tamae.5ch.net/test/read.cgi/php/1069245758/752
753: nobodyさん [sage] 04/10/04 02:00:16 ID:??? s/<XXXX[\n\s]+([^>]*)>(.|\n)*<\/XXXX>/$1/g; /(.+?)[\n\s]*=[\n\s]*("(\\"|[^"])+"|[^\s]+)(?:[\n\s]+|$)/; #$1=属性, $2=値 やっとできた・・・。 \"を含める方法とか、勉強になりました。 http://tamae.5ch.net/test/read.cgi/php/1069245758/753
754: 753 [sage] 04/10/04 02:10:49 ID:??? >>752 そうだ、 >value = aaaa の場合 >value = "aaaa" の場合で異なる値にしたい(" がポイント) これがどういう結果を望んでいるのか分からないままやってたw とりあえず、ダブルクォートは残す仕様にしておいたけど。 http://tamae.5ch.net/test/read.cgi/php/1069245758/754
755: 750 [] 04/10/04 07:43:16 ID:3m/jnQ5F ありがとう〜(;´д`) とりあえず、ためしてみます。。 >>752にあるように、= の両隣は、スペースが入ったり、入らなかったりします。厳密にはJavaでいうところのホワイトスペースを許可してて、タブとか全角スペースなどもありです。ここは許可しないことを改善してもらうつもりです。 あとで結果報告しますね。ありがとう〜 http://tamae.5ch.net/test/read.cgi/php/1069245758/755
756: nobodyさん [sage] 04/10/04 11:31:31 ID:??? 可能であれば、独自な形式でなくて、 みんなが使ってるフォーマット (XML ね) にしてもらうようにした方が良いと思う。 http://tamae.5ch.net/test/read.cgi/php/1069245758/756
757: nobodyさん [sage] 04/10/04 15:15:50 ID:??? 同感。あとちゃんとtokenizeすればスパゲッティにはならんでしょ、このくらい。 http://tamae.5ch.net/test/read.cgi/php/1069245758/757
758: nobodyさん [] 04/10/11 11:12:51 ID:ek9GJkPH 質問させてください。 EZwebの絵文字をShift_JISコードに変換する正規表現を書いたつもりなのですが、 ”♪”マークなど一部の絵文字以外の記号にマッチしてしまいます・・・。 (使用言語:PHP 4.3.3) $sjis='[\x81-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]'; $text=preg_replace("/((?:$sjis)*)([\xf3-\xf7][\x40-\xfc])/e","'\\1['.bin2hex('\\2').']'",$text); EZweb絵文字だけにマッチさせるようにするには、どうのように直したら良いでしょうか? よろしくお願いします。 http://tamae.5ch.net/test/read.cgi/php/1069245758/758
759: nobodyさん [sage] 04/10/12 01:28:24 ID:??? (?:$sjis)*のところ、(?:$sjis)*?にしないと全部取っちゃうよ。 そこら辺は大丈夫? http://tamae.5ch.net/test/read.cgi/php/1069245758/759
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 222 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s