- 1 名前:正規表現 mailto:正規表現 [02/12/06 18:09.net]
- 正規表現
- 139 名前:名無しさん@Vim%Chalice mailto:sage [03/04/26 13:59.net]
- Vim
- 140 名前:名無しさん@お腹いっぱい。 mailto:yosage [03/04/26 18:15.net]
- perlとかなら
/(ma|chi)nko/i みたいに i オプションつけることで 大文字小文字を同一視してくれる機能が一般的に普及してますね。 grepとか大抵の性器表現できるツールにはあるみたい。 そこでほしいのが平仮名片仮名同一視。 /[まち][んむ]こ/i とすれば「マむコ」にも「チンこ」にもマッチしてほしいわけ。 そういう機能がついた性器表現ってどういうツールにございますか? あと /ベートーヴェン/i で検索したら 「ベートーベン」や「べえとおべん」にもマッチしてくれる ようなのもあるものでしょうか?
- 141 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 18:53.net]
- >>139
後者は正規表現の範疇ではないような。 前者はあってもよさそうだね。
- 142 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 19:16.net]
- 文字クラスの拡張でしょうか
- 143 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 20:15.net]
- >>141
日本語用文字クラスってわけね。 しかしそんな日本でしか使えないもんはツールで対応すべきだな。 >>139 >/ベートーヴェン/i >で検索したら >「ベートーベン」や「べえとおべん」にもマッチしてくれる こんなん正規でも正則でもない非正規表現だ。 >>139は正規表現使うのやめた方が幸せになれそうだよ。
- 144 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 20:25.net]
- >>139 Migemoの辞書をカスタマイズすればできるようになるよ
- 145 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 21:25.net]
- >>143
そういう問題じゃなかろう・・・
- 146 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 21:27.net]
- 日本語正規表現の使える実装は Ruby, 鬼車, jperl, xyzzy, Emacs, Vim で全てですね?
- 147 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/26 22:05.net]
- >>145
いいえ。
- 148 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/27 02:24.net]
- 文字クラスとか自分で設定できる正規表現みたいなのが
あればいいんじゃないの。 どうせ perl だって場あたり的に好きなように拡張してるんだから。
- 149 名前:名無しさん@悩み中 [03/04/28 05:24.net]
- sed ですが、
[[:xdigit:]]\{2\} にマッチする文字列のなかで、 \(61\|75\|6f\) にマッチしないようなものを指定したいとき どないすればよろしい?
- 150 名前:148 [03/04/28 05:37.net]
- やっぱり、先に \(61\|75\|6f\) にマッチする奴を退避しておいてから、
[[:xdigit:]]\{2\} にマッチするやつを指定するしかないんかな…
- 151 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 02:16.net]
- 誰か、正規表現だけで会話するスレ作ってくれ。
- 152 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 03:26.net]
- /いったい何を会話するというのだ/
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 04:09.net]
- >>150
それこそ言いだしっぺの法則だろ。正規表現だけで会話したい >>150 が立てれ。
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/29 09:51.net]
- 駄スレ立てんな。
- 155 名前:名無しさん@Meadow mailto:sage [03/04/30 10:51.net]
- >>153
$mes153 =~ s/。//; reverse(split(//, $mes153)); わかた? 結果は、「なんてつたレスだ」
- 156 名前:名無しさん@お腹いっぱい。 [03/04/30 11:12.net]
- >>154
こうなりますた。 $ perl -e 'quotemeta($var='駄スレ立てんな。'); print reverse(split(//,$var));' B∧んてぉ洛スμ・
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 11:29.net]
- >>150
名スレの予感
- 158 名前:名無しさん@Meadow mailto:sage [03/04/30 14:53.net]
- >>155
jperlじゃないとだめですね。perl用もかきますた。 ($var='駄スレ立てんな。') =~ s/立(.+)。/たつ$1/; while ($var) { if ($var =~ s/^[\xA1-\xFE][\xA1-\xFE]// or $var =~ s/^.//) { push(@str, $&); $var = $'; } } print reverse(@str), "\n";
- 159 名前:名無しさん@お腹いっぱい。 [03/04/30 15:47.net]
- >>156
2chですから、性器表現とこれを用いた強制痴漢ならあちこちに。
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 21:21.net]
- \hなのはいけないと思います!
- 161 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 23:49.net]
- \SM(?:性器拡張(?!器具))
- 162 名前:名無しさん@Meadow mailto:sage [03/05/01 15:28.net]
- >>157
何やってんだろな、漏れ。 ($var='駄スレ立てんな。') =~ s/立(.+)。/たつ$1/; while ($var =~ s/^[\xA1-\xFE][\xA1-\xFE]// or $var =~ s/^.//) { push(@str, $&); } print reverse(@str), "\n"; で十分
- 163 名前:セった。この全角文字対応の正規表現は、euc-jpの奴ね。
でもさ、やっぱ正規表現で会話するってむずいよ。>>150よ。 [] - [ここ壊れてます]
- 164 名前:名無しさん@お腹いっぱい。 mailto:s/つーか全角空白使ってる時点でダメダメ/sage/; [03/05/01 21:39.net]
- print while s//>>161普通過ぎてつまらん/;
- 165 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/01 21:48.net]
- >>161
それは正規表現ではなく perl script というのではないだろうか。
- 166 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/01 21:50.net]
- >>163の的確すぎるツッコミに藁。
- 167 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/01 21:59.net]
- >>1-164
これら全てが正規表現であることは自明なのであります。
- 168 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/02 08:30.net]
- Perl正規表現の質問です。
Ascii文字コードは、アルファベット大文字→ちょこっと記号類→アルファベッ ト小文字の順に並んでるですが、以下のようになるのはなぜですか。なぜ、ア ルファベット大文字しか出てこない? $ perl -e 'for(A .. z) {print $_, ", ";}' A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
- 169 名前:名無しさん@お腹いっぱい。 [03/05/02 11:26.net]
- >>166
駱駝本(第二版)の p.103 の脚注 *32 に、 > もし指定された最終値が、マジックによる増加によっては生成できない > ような値なら、最終値のケタ数を超えない範囲で値を生成する。 と書いてあるけど、違う?
- 170 名前:名無しさん@Meadow mailto:sage [03/05/02 14:27.net]
- >>167ありがとん。
>マジックによる増加によっては生成できない というのが分からなかったので、駱駝本(第3版)引いたら、「マジックイン クリメント:普通の数値と同じようにして、英数字からなる文字列の値に「1 を加える」方法を知っているインクリメント演算子のこと。」だって。Aは、 16進数で41、Zは、5A。5B以下60までは、[、\, ], ^, _, `で、61から小文字。 一つずつインクリメントされて並んでいるが、できないところを見ると、「英 数字からなる文字列」だけをサポートしている演算子なんだね。 第2版の103ページにあたる121ページあたりにも、A .. Zやa .. zの例はある けど、A .. zはない。
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/02 22:35.net]
- 文字のインクリメントもちゃんと桁上げされるんよ。
#perl > result.txt $a = "a"; print ++$a, "\n" while (length $a < 3);
- 172 名前:169 mailto:sage [03/05/02 22:38.net]
- あ、これじゃ for (A..Z) の説明にはならないな。
- 173 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/02 22:50.net]
- >>166
全然正規表現じゃなかった・・・。
- 174 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/04 07:28.net]
- /\x82\xad\x82\xbb\x82\xc1/
sjis
- 175 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 11:59.net]
- >>172
パターンマッチさせる意味は?
- 176 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 18:39.net]
- >>172
1) ネタがないから 2) わし166だので、172に揶揄されて「くそっ」と
- 177 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 18:44.net]
- ちがった、171にバカにされて・・・
~~~
- 178 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/05 19:18.net]
- おまえらみんな(ち|い|う)んぽ。
- 179 名前:名無しさん@お腹いっぱい。 [03/05/07 16:30.net]
- 『詳説 正規表現』を読んでいるようなエキスパートの人に質問です。
「"a" が偶数個、"b" が奇数個含まれる、すべての文字列を表す正規表現」 って分かりますか? 自分は答えを見てもよく分かりませんでした。
- 180 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/07 17:37.net]
- まずどのような「状態」があるのかを考える。この場合は
1. aが偶数個、bが偶数個 2. aが偶数個、bが奇数個 3. aが奇数個、bが奇数個 4. aが奇数個、bが偶数個 で初期状態が1でゴールが2となる。 まず最初に1から2に行くには /b/ の1通り。aが来ると4に行く。 4からスタートして1もしくは3を経由し2へ行く最短パターンは /(aa|bb)*(ab|ba)/ 以上から /b|a(aa|bb)*(ab|ba)/ が状態2に行き着く最短パターン。←第1段階 次に状態2からスタートして考えると /aa/ で3を経由して2へ戻り、 /bb/ で1を経由して2へ戻り、/ab|ba/ では4へ行ってしまう。 4へ行ってしまった後は先に考えた「2へ行く最短パターン」で帰って来れるので、 2から始まって2に戻るパターンは /aa|bb|(ab|ba)(aa|bb)*(ab|ba)/ となる。 これは0回以上起こり得ることを考慮して第1段階と結合すると /(b|a(aa|bb)*(ab|ba))(aa|bb|(ab|ba)(aa|bb)*(ab|ba))*/
- 181 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/07 18:18.net]
- >>177
余裕があれば一度オートマトンに関する本を読んでみて。 www.amazon.co.jp/exec/obidos/ASIN/4320029488/ref=sr_aps_b_1/249-5563000-9397957 の前半はすごくわかりやすいよ。 そこまでしなくても、一度 >>178 たんのいってることを katsu.watanabe.name/grep/p7.html みたいな状態遷移図にしてみるといいかも。
- 182 名前:177 mailto:sage [03/05/07 21:15.net]
- 自分がこの問題を見たのは古い UNIX MAGAZINE で、内容を簡単に引用しますと …
偶数か奇数かを調べるには文字の数を2で割った余りが0か1かという 決まった2つを調べればよいため、正規文法で記述することが可能。 なお、この文法では a に関して2つ、b に関しても2つの場合があるので、 2 x 2 = 4 つの記号(状態)を用いる。 A → aB B → aA C → aD D → a A → bC B → bD C → bA D → aC A → b D → bB 状態 A … a が偶数個で b が奇数個の文字列 状態 B … a が奇数個で b が奇数個の文字列 状態 C … a が偶数個で b が偶数個の文字列 状態 D … a が奇数個で b が偶数個の文字列 以上により答えは ((a|b(aa)*ab)(b(aa)*b)*(a|ba(aa)*b)|b(aa)*b)*((a|b(aa)*ab)(b(aa)*b)*ba|b)(aa)* となる。 正規表現でうまく表現できない問題に当たったときは、いったん正規文法で記述してから 正規表現に変換すると解決できる場合も多い。
- 183 名前:長いので分割。 mailto:sage [03/05/07 21:17.net]
- … だそうです。
果たして↑の長い正規表現が >>178 さんの答えと同じものを表しているのかどうか 分かりませんけども。 >>179 有用な本と URL の紹介、ありがとうございました。 それにしても最初にパッと見て「この問題は有限個の状態で表せる」って思いつくかなぁ? 不思議だ。
- 184 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/07 21:36.net]
- >>181
> それにしても最初にパッと見て「この問題は有限個の状態で表せる」って思いつくかなぁ? それはパッと見というよりは、冷静に分析してわかるものでしょ。 慣れれば一瞬で分析できるようになるかもしれんけど。
- 185 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/07 22:50.net]
- >>178,180
それは「aとbだけからなる文字列」について?
- 186 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 00:00.net]
- >>183 んなもん s/[ab]/[^ab]*&/ すりゃ良いだけじゃん
- 187 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 03:51.net]
- >>184
それって、正気表現でつか?
- 188 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 04:49.net]
- >>183 のために [^ab]* をはさみまくってたら、
「長すぎる行があります!」 っておこられたよ・・・
- 189 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 10:42.net]
- /[^ab]*(b|a([^ab]*(a[^ab]*a|b[^ab]*b))*[^ab]*(a[^ab]*b|b[^ab]*a))([^ab]*(a[^ab]*a|b[^ab]*b|[^ab]*(a[^ab]*b|b[^ab]*a)([^ab]*(a[^ab]*a|b[^ab]*b))*[^ab]*(a[^ab]*b|b[^ab]*a)))*/
- 190 名前:名無しさん@お腹いっぱい。 [03/05/08 12:54.net]
- >>187
それで baaabaaab がまっちすんの?
- 191 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 13:27.net]
- 以下のようなデータから、著者の部分(最後の括弧から括弧まで)を
取り除きたいと思います。 木立(こだち)のなかに(夏目弱石) 山の上の芋粥(いもがゆ)(芥川蛇の介) s/(.+?)$//; ですとうまくいきません。perl5.6で、文字コードはeucです。 webprog板のPerl初心者スレで聞いたのですが、どうも解決しないのです。 どうしたらよいか教えていただければ幸いです。
- 192 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 13:40.net]
- >>189
セイキヒョーゲンの問題ではなくパールの問題っぽいですね。 そっちのスレ行った方がよいかも。 できるなら「うまくいきません」を再現させる できるだけシンプルなコードを添付してほしいな
- 193 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 13:41.net]
- >>189
プログラム技術板にPerlの質問スレがある。webprogに特化したこと以外はそっ ちの方がいい。 s/([^()]+?)$//;
- 194 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 13:44.net]
- Perl の正規表現では ( ) は、後で \1, \2, ... にマッチさせるための
メタ表記だから、括弧そのものにマッチさせたければ \( \) と書かなければ ならない。(egrep や emacs とは逆)
- 195 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 13:44.net]
- >>190
では、Perlスレ行ってきます。って、unix板にはなかったんで、 プログラム板ですね。ありがとございますた。
- 196 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 13:47.net]
- あれれ板探してたら、2つもレスが。
>>191 それ、jperlなら動くんでしょうが、perl5.6ではだめでした。 >>192 いや、全角括弧なんです。
- 197 名前:名無しさん@お腹いっぱい。 [03/05/08 13:53.net]
- >>192
それは \x28 や \x29 の場合だけでしょう。 今でてきてるのは \xa1\xca と \x1a\xcb。 ちなみにperlの最短一致は マッチの先頭位置を後ろにずらす効果がないので注意。 ($b="abcabc")=~s/b.*?c$//; print "$b\n"; # output "a" 189の要望はここで"abca"を出してほしいということで叶わない
- 198 名前:189 mailto:sage [03/05/08 14:10.net]
- >>195
>perlの最短一致は >マッチの先頭位置を後ろにずらす効果がない なるほど。では、>>189のコードは、 木立 山の上の芋粥 を出力してもいいはずですが、何も出力しない(何にもマッチしない)んです。 どうしてですか。よろしければ教えてくらさい。
- 199 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 14:14.net]
- s/(.+)(.+)$/\1/;
- 200 名前:189 mailto:sage [03/05/08 14:19.net]
- >>197
これだと、 木立 山の上の芋粥 になってしまいます。求めているのは、 木立(こだち)のなかに 山の上の芋粥(いもがゆ) です。
- 201 名前:197 mailto:sage [03/05/08 14:22.net]
- マジ? 手元の Perl 5.005_03 だと求めているのになるのだが・・・
- 202 名前:189 mailto:sage [03/05/08 14:28.net]
- >>199
すみませ〜ん。 求めているものになりました。いろんなスクリプト混ざり合ってたので 混乱しました。 (.+)が最長一致するから(.+)でいいってことに気づきませんでした。
- 203 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 14:45.net]
- perlの正規表現と日本語文字列との相性の悪さを
実感する問題だったなあ
- 204 名前:192 mailto:sage [03/05/08 14:50.net]
- 本当に全角だったのか。失礼。だとすると、/(/ が EUC の 2 バイト目と
文字に一致するとは限らないので注意。全角文字の 2 バイト目と次の文字の 1 バイト目がそれぞれ \xa1 と [\xca-\xcb] にマッチする場合があるので、 文字列「検便」\b8\a1\xca\xd8 にも「(」がマッチしてしまう。 日本語 EUC の 1 文字 にマッチさせたいなら、厳密には (\x8f?[\xa1-\xfe]{2}|\x8e[\xa1-\xfe]|[\x00-\xff]) にマッチさせなくてはならない。 Perl6 の国際化された正規表現が普及して、こんな知識は不要になって くれれば一番いいのだが…。
- 205 名前:192 mailto:sage [03/05/08 14:56.net]
- この例の場合、最後の括弧の中は全角ひらがなしか入らないから関係ないけどね。
- 206 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/08 15:51.net]
- 5.8ならuse utf-8; use Encode;して適切なエンコード指定でファイル読み込ませれば解決するぞ。
- 207 名前:名無しさん@お腹いっぱい。 [03/05/08 21:50.net]
- 61.210.205.4/
これなんだろ@@@
- 208 名前:名無しさん@お腹いっぱい。 [03/05/08 23:46.net]
- WebP
- 209 名前:rog板の「正規表現道場@2ch Part2」はご存知?
http://pc2.2ch.net/test/read.cgi/php/1038146241/ [] - [ここ壊れてます]
- 210 名前:189 mailto:sage [03/05/09 15:02.net]
- >>206
知ってます。最近、書き込み少ないので、こっちにしました。 あっちでは、以前、いろいろ答えてあげてたんですが。 実は、他のやり方ならいろいろ考え付いたのですが、 s/(.+?)$//; がなぜだめかが知りたくて質問したのでした。 >>195だけがその質問に答えてくれました。そいえば、それも らくだ本で読んだ覚えあったなぁと。しかし、「最短一致がマッ チの先頭部分を後ろにずらしてくれない」という理由ですと、 なぜ、「木立(こだち)のなかに(夏目弱石)」が、「木立」 にならないか、いまだに不明です。($b="abcabc")=~s/b.*?c$//; で$bが'a'になるんだから、そうなってもいいはずですよね。 # でも、3つのスレで「()をエスケープしろ」っていう返事をもらったのにも # びっくり。漏れは、navi2chなので、半角と全角は一目瞭然ですが、IEで見 # てみたら、たしかに女滋養に見えますた。
- 211 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/09 15:32.net]
- 女滋養(;´Д`)ハァハァ
- 212 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/09 17:39.net]
- 生粋のプログラマーなら日常的に半角全角の違いがすぐ分かる環境を望む。
そうじゃない人はあまり気にしないので女痔用に見えても兵器。
- 213 名前:名無しさん@Meadow mailto:sage [03/05/09 17:52.net]
- 女痔用 (´;。;△;。;)キモ!!!!!!!!!!!!!!!
- 214 名前:名無しさん@Meadow mailto:sage [03/05/09 21:33.net]
- >>207
漏れは、navi2chでも迷ったっぞい。
- 215 名前:189=207 mailto:sage [03/05/09 22:20.net]
- >>211
はっきり言っておくんなさい。 たすかに、fontの問題かもすれんですよ。 だかーら、記号類は半角とか全角とか注釈つけとけと… でもって、半角カタカナなんか問題ない時代になったんだなー、と。
- 216 名前:名無しさん@お腹いっぱい。 [03/05/11 04:17.net]
- 半角か全角かをいちいち説明されないと違いの分からないような
素人さんにはそもそも質問なんかされてないんですよ
- 217 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 15:57.net]
- 189が意図的に使い分けてるという保証もなかったわけだが。
- 218 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 16:17.net]
- >>214
はじめから euc と断ってたし、 対象テキストデータとか試しに提示したダメコード片を良く見れば、 意図的に使い分けてることは十分想像できたと思うが。 質問の仕方や内容からも半角全角混同してるようなレベルの質問とは思えなかった。 つうか、>>207 は何をいまだにハマってるんだ? s/(.+?)$//; なら「木立」になるから問題なかろう?
- 219 名前:191=214 mailto:sage [03/05/11 16:20.net]
- >>215
一応そう想定して答えた。
- 220 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 16:40.net]
- >>216
釈迦に説法か。スマソ
- 221 名前:189=207 mailto:sage [03/05/11 18:24.net]
- >>215
いえ、それが、全行出力されちゃうんです。 ちょっと、やってみていただけませんか。(インデントはわざとしません。) --- while(<DATA>) { chomp; s/(.+?)$//; print "$_\n"; } __DATA__ 木立(こだち)のなかに(夏目弱石) 山の上の芋粥(いもがゆ)(芥川蛇の介)
- 222 名前:215 mailto:sage [03/05/11 18:36.net]
- >>218
ん〜、なんないよ (5.005_03) 。 5.6 を試す環境が無いので申し訳ないでつが、Perl のバージョンの問題?
- 223 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 19:16.net]
- >>218
5.6.0 で試したらそのまま出ますた。 これまでの経緯をちゃんと読んでないんだが、 s/([^)]+)$//; じゃダメ?
- 224 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 19:23.net]
- >>220
それだと、 [^)] の部分は [^\xa1\xcb] なのでダメだと思われ。 >>204 の方法だとうまくいくようになるの?
- 225 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 21:08.net]
- >>218
5.8.0だと、191の式でうまくいくんだがなぁ。 while(<DATA>) { chomp; s/([^()]+)$//; print "$_\n"; } __DATA__ 木立(こだち)のなかに(夏目弱石) 山の上の芋粥(いもがゆ)(芥川蛇の介) 木立(こだち)のなかに 山の上の芋粥(いもがゆ)
- 226 名前:189=207 mailto:sage [03/05/11 21:30.net]
- 追試どうもです。
>>219 古いマシンに5.005_03(5.005_03 built for i386-linux)もあったのでやっ てみたら、奇妙なことに。 euc-jp-dos、shift_jis-unix → OK euc-jp-unix、shift_jis-dos → 行全体が出てくる v5.6.0 built for MSWin32-x86-multi-threadおよびv5.6.1 built for cygwin-multiでは、どれでもだめです(行全体が出てくる)。文字コードutf8 にしても同じ。 >>222 こりゃもう5.8にするべきですかね。
- 227 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/11 21:31.net]
- >>222
いやいや、たまたまうまくいっているように見えるだけでしょ。 >>202 さんのを参考にしる。
- 228 名前:195 mailto:sage [03/05/12 09:32.net]
- >>218
s/(.*?.)$//; にしとけ perlのバグだ 暇ならソースのMINMODあたり追いかけて
- 229 名前:189=207 mailto:sage [03/05/12 21:13.net]
- >>225
ありがとん。「。」毎に改行入れようとして、s/(.+?。)//;やってみたが、こ れすらできんかった。結局、perl5.6以上はjperlないから日本語処理を中心に してる場合は、使えないってことかなぁ。もち、~ohzakiさんとこに書いてあ るような注意をしたり、半角文字で置き換えたりすれば使えるげど、面どい。
- 230 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/12 23:01.net]
- >>226
5.8にしてEncodeつかう。
- 231 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/13 02:04.net]
- >>226
> 結局、perl5.6以上はjperlないから日本語処理を中心にしてる場合は、 > 使えないってことかなぁ。 違うっしょ。
- 232 名前:189=207 mailto:sage [03/05/13 07:23.net]
- >>227
やってみまつ。 >>228 じゃ、jperlでできるs/.+?[。!?]/$1\n/g;あたり、どやってやる? めんどいでしょ。
- 233 名前:189=207 mailto:sage [03/05/13 07:24.net]
- あら、s/.+?[。!?]/$&\n/g;だった。
- 234 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/13 11:05.net]
- >>229
あぁ、そういう話か。それはその通りですね。 でも、それは 5.8 の Encode とやらを使うと解決するってことなのでは。 っつーか、漏れは 5.8 動かせる環境無いので確認しようがないんでつが、 誰一人として Encode が一体何者なのか説明しようとしないのは何故?
- 235 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/13 11:39.net]
- >>231
use utf-8; use Encode; my $ENC = 'euc-jp'; # or 'cp932' binmode STDOUT, ":encoding($ENC)"; binmode STDIN, ":encoding($ENC)"; 普通に標準入出力にアクセスすればOK。スクリプト内に日本語書くときはUTF-8で。 っていうかperldoc嫁
- 236 名前:名無しさん@お腹いっぱい。 [03/05/14 01:43.net]
- >>232
perl 5.6 では不可能ということか?
- 237 名前:189=207 mailto:sage [03/05/14 08:50.net]
- >>232
まだ、5.8を試してないんですが、>>232って、euc-jpの端末でeuc-jpのスクリ プト書いて、perlにutf-8で処理させるってことですね。utfサポートは、5.6 からあるので、mule-ucs+bdfフォントで、emacs上でprocess-coding-system (inputもoutputも)もutf-8にして、やってみたけどだめですた。 私が問題にしているのは、[](文字クラス)や+?、*?(最短一致)がマルチバ イトに対応しているかどうかということなのですが・・・
- 238 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/14 10:15.net]
- >>234 5.6時代から既に対応している
- 239 名前:189=207 mailto:sage [03/05/14 10:57.net]
- >>235
[](文字クラス)をテストしてみたけど、だめです。 utf-8で以下のスクリプト実行して見れ。jperlではOKですが・・・ --------- while(<DATA>) { chomp; while (s/.+?[。!?]//) { print "$&\n"; } print; } __DATA__ utf-8で処理させて下さいね。5.6でね。utfサポートは、 5.6からあるけど、このスクリプトだめぽ!>>235は、何が 5.6時代から既に対応しているって言ってんの?変だよ。
|

|