正規表現道場@2ch
■ このスレッドは過去ログ倉庫に格納されています
0001ヽ(´▽`)ノ
2001/07/26(木) 09:03ID:???でもperlを使いのなす上で避けて通れない道だったりするかもです。
そこで、スクラップブック的に目に止まったカッコイイ正規表現を
書き留めておこうと言うスレッドです。
質問する時は言語と、得たい結果をなるべく詳しく書いてね。
取り合えず僕が知ってる有用なリンクです。
http://www.din.or.jp/~ohzaki/perl.htm
http://www.kt.rim.or.jp/~kbk/regex/regex.html
もっとイイ(・∀・) リンクは>>2-10さん辺りが書いてくれるカモ・・・・
0002名無しさん@お腹いっぱい。
2001/07/26(木) 09:13ID:YXyw6YTU期待age
0003_gunzip
2001/07/26(木) 09:16ID:???http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
この辺りも参考になるかな。
0004名無しさん@お腹いっぱい。
2001/07/26(木) 12:33ID:???0005加奈子
2001/07/26(木) 15:30ID:???わたしの魔法で名スレにしちゃうわよん♪(らぶらぶはぁと)
素晴らしい正規表現教えてね♪
すっご〜いの書いてくれた坊やには、ご褒美として
お姉さんが、やさ〜しく、童貞を奪って・ア・ゲ・ル・わよん♪うふ★(はぁと)
0006名無しさん@お腹いっぱい。
2001/07/26(木) 16:42ID:???($輪郭,$目,$鼻,$口,$性格,$髪型,$マンコの臭さ,$締まり,$喘ぎ声) = split(/\t/, $_);
if ($目 =~ /ひとえ/) {
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
exit;
}
}
00076
2001/07/26(木) 16:45ID:???0008初心者用
2001/07/26(木) 18:38ID:rraA5UWo$hoge =~ s/ab/abab/g;
と
while( s/ab/abab/ ){}
のヤヴァイ違いを理解すべし。
0009名無しさん@お腹いっぱい。
2001/07/26(木) 20:42ID:???それじゃ動かないだろ。
0010名無しさん@お腹いっぱい。
2001/07/27(金) 00:07ID:M7QCgAvY0011名無しさん@お腹いっぱい。
2001/07/27(金) 00:40ID:???もっとイイ(・∀・) リンクは>>2-10さん辺りが書いてくれるカモ・・・・
という願いはほぼ崩れ去ったな。気の毒に…
0012名無しさん@お腹いっぱい。
2001/07/27(金) 06:26ID:???$hoge =~ s/</</;
0013名無しさん@お腹いっぱい。
2001/07/27(金) 10:34ID:???0014名無しさん@お腹いっぱい。
2001/07/27(金) 16:33ID:???0015名無しさん@お腹いっぱい。
2001/07/27(金) 17:43ID:9sLGF54Q\s+ | # Space
[\x21-\x7E]+ | # Latin
(?:[\xA1-\xA2][\x00-\xFF])+ | # Symbol
(?:\xA3[\x00-\xFF])+ | # Eisuu
(?:\xA4[\x00-\xFF]|\xA1\xBC)+ | # Hiragana
(?:\xA5[\x00-\xFF]|\xA1\xBC)+ | # Katakana
(?:\xA6[\x00-\xFF])+ | # Greek
(?:\xA7[\x00-\xFF])+ | # Russian
(?:\xA8[\x00-\xFF])+ | # Keisen
(?:[\xB0-\xF4][\x00-\xFF])+ | # Kanji
. # Other
/gx;
EUC-JPの文字列から漢字、平仮名、カタカナ、アルファベットの文字列をブリブリ切り分ける
from perl-oo
0016名無しさん。
2001/07/27(金) 18:45ID:OFQPU1uA0017名無しさん@お腹いっぱい。
2001/07/27(金) 22:53ID:???$hoge =~ s/</</;
と書きたかったのだと思われ
0018名無しさん@お腹いっぱい。
2001/07/29(日) 13:17ID:???0019名無しさん@お腹いっぱい。
2001/07/29(日) 15:06ID:???気持ちはわかる。願望だ。(w
0020出題君@fushianasan
2001/07/29(日) 15:47ID:hCDIdcLQマッタリ、セックス、オナニー を
マターリ、セクース、オナーニ に換える
0021名無しさん@お腹いっぱい。
2001/07/29(日) 18:16ID:???0022名無しさん@お腹いっぱい。
2001/07/29(日) 23:15ID:1COkoXYs下のは練習に書いてみたやつ。 なぜか最後のprintでコンパイルエラー出まする。
study $html;
$pattern = '<A href="([^"]+)">';
while ( $html =~ /$pattern/is ) {
$html =~ s/$pattern//is;
push( @_, $1 );
print "$1\n";
}
#print "$_\n" foreach(@_);
0023棺
2001/07/30(月) 00:50ID:tCdJa/Mcforeach (sort keys %URL) {print "$_\n";}
.
.
.
sub url_extract {
my($href) = shift;
$URL{$href}++;
return $href;
}
某スクリプトの一部を拝借
経験上,マッチするごとにサブルーチンに渡した方が早く感じます(何故?
http://schwarzekatz.hypermart.net/test.cgi
そーす
http://schwarzekatz.hypermart.net/test.txt
0024名無しさん@お腹いっぱい。
2001/07/30(月) 01:06ID:???#!/usr/bin/perl
use strict;
use HTML::LinkExtor;
my $p = new HTML::LinkExtor;
$p->parse(<<HTML);
HTML
my %link_set;
foreach my $l ($p->links ) {
my ($tag, %link) = @$l;
next if $tag ne 'a';
++$link_set{$link{href}} if exists $link{href};
}
foreach my $link (sort keys %link_set) {
print $link, "\n";
}
__END__
> $pattern = '<A href="([^"]+)">';
> while ( $html =~ /$pattern/is )
> $html =~ s/$pattern//is;
+o
002522
2001/07/30(月) 02:15ID:???置き換えする時にサブルーチン呼んだり、ハッシュ使ったり、モジュール使ったりと
いろんな技があるんですね。勉強になりますた。
大きなのに固定正規表現使う時はoを使うことにします。
感謝。
0027名無しさん@お腹いっぱい。
2001/08/02(木) 14:18ID:???激しく定番なのかもしれませんが、
<FOO>
hogehogehogehoge
hogehogehogehoge
hogehogehogehoge
hogehogehogehoge
</FOO>
のパターンようにある文字列Aと文字列Bに*囲まれた部分*
を表す正規表現の王道というのはどんなもんなんでしょうか
なんかやるたびにうまくいったりいかなかったりしてるんで
定番パターンというのがあれば知りたいです。
厨房くさくてスミマセソ
0028JAPU@ほえほえ
2001/08/02(木) 14:44ID:???0029名無しさん@お腹いっぱい。
2001/08/02(木) 14:54ID:???はぁ。やっぱ普通そうですよね。。。
ってsオプション?
知らない…調べてきます。
レスさんくすです。
003027
2001/08/02(木) 14:56ID:???ちなみにJAPUタンとタメ歳なのです…。
この違いは…
0032JAPU@スクルド萌え
2001/08/02(木) 15:35ID:???この辺の説明はらくだ本だとちょっと不親切な気がする。
$_ = "\n\n";
print "moe\n" if /../;
print "hoe\n" if /../s;
>>27
たまたま この分野で、少しだけ詳しいだけなので、
あまり気にしていてはダメよん。
0033名無しさん@お腹いっぱい。
2001/08/02(木) 15:51ID:???0034名無しさん@お腹いっぱい。
2001/08/02(木) 16:11ID:???0035名無しさん@お腹いっぱい。
2001/08/04(土) 00:26ID:b7KA9zTo0036名無しさん@お腹いっぱい。
2001/08/04(土) 02:38ID:???面白そうなので、自分も作ってみた。
でも、ちょっとしか、テストしてない。
バグでたら、ゴメン。
#!/Perl/bin/MSWin32-x86-object/jperl -w
use strict;
undef $/;
while(<>){
my @urls = m/<a href\s*="(.*?)".*?\/a>/isg;#get url
@urls =sort @urls;#sort
my $prev = 'nonesuch';#uniqu(faqのコード、コピペ)
@urls = grep($_ ne $prev && ($prev = $_), @urls);
print "\n\n -----$ARGV------\n\n" ;
print join("\n",@urls);
}
0037初期不良
2001/08/06(月) 01:45ID:VQtSpJpE類似性相似性を見るとむずむずするので
後方参照の例題的なものを利用。
for('FOO', 'BAA'){
m[<($_)>(.*?)</\1>]s;
$data{$_} = $2;
}
スレ違いだけどみんな foreach ってわざわざ書くの?
俺は for でいいって聞いてからずっと for なんだが...
わかりにくかったりするかな。
0038名無しさん@お腹いっぱい。
2001/08/06(月) 02:38ID:???#foreachは長くて目立つので
0039名無しさん@お腹いっぱい。
2001/08/06(月) 11:48ID:Ij2f2Gkcmod_perlや、speedycgiで前のパターンが残ってしまいますが、
これの回避方法ってありますか?
0040名無しさん@お腹いっぱい。
2001/08/06(月) 12:27ID:???oオプションを使わない
っつか正規表現とは関係ないと思うのだが?
>>38もな
0041名無しさん@お腹いっぱい。
2001/08/06(月) 16:43ID:???死きり屋uZeeeeee
0042名無しさん@お腹いっぱい。
2001/08/06(月) 21:20ID:???オマエモナー
0043名無しさん@お腹いっぱい。
2001/08/12(日) 14:24ID:???特殊変数は有りませんか? "$&"がマッチングした文字列みたいなんですが・・・・
本にも $` $' 辺りしか載っていないのです。
他の方法でも大丈夫なのですが、前に何かで見た気がして必死でさがしてる
のですが、見つからないのです (汁;;
気のせいだったのかなぁ・・・・
0044名無しさん@お腹いっぱい。
2001/08/12(日) 14:38ID:???my $count = ($tmp =~ s/t/T/g);
print "$count 個の t を T に置換しました\n";
こんな感じ?
004543
2001/08/12(日) 15:23ID:???聞いてみるものだなぁ。。。勉強になりますぅ
今までtでsplitして要素数をみてた馬鹿なおいら ^^
>>44 ありがとう、もっと精進します
0046名無しさん@お腹いっぱい。
2001/08/20(月) 06:59ID:???ついでに前に掲示板スレかどっかにあった荒らし制限を載せてみる。
アヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャ
s/(...+?)\1\1+/$1$1$1/;
アヒャヒャヒャヒャヒャヒャ
0047名無しさん@お腹いっぱい。
2001/08/20(月) 10:32ID:???0048名無しさん@お腹いっぱい。
2001/08/20(月) 11:07ID:???ちゃんとした解説本を読んでみよう、ちゃんとのってるよ
0049名無しさん@お腹いっぱい。
2001/08/21(火) 02:46ID:Tv58Rzygアヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャオヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョヒョ
$char = 2; $repeat = 3;
s/(.{$char,}?)\1{$repeat,}/$1x$repeat/eg;
アヒャヒャヒャオヒョヒョヒョ
0050名無しさん@お腹いっぱい。
2001/08/22(水) 03:34ID:zNoLcpmA目からウロコ
0051名無しさん@お腹いっぱい。
2001/08/22(水) 17:41ID:B/pBRo0o禿同!
鱗どころか、鎧が落ちた気がした。
0052名無しさん@お腹いっぱい。
2001/08/22(水) 17:44ID:???ふくろう本ってやつですか?
買って見ようかな、、オークに嵌っている今日この頃 (^_^;
0053名無しさん@お腹いっぱい。
2001/08/25(土) 13:20ID:???0054名無しさん@お腹いっぱい。
01/09/01 00:11ID:EyspkUdI見失っちゃったよ。
sedとかも載ってて薄緑のページ。
確かorgドメインだったかな、、面白いサイトは無いかなー
0055名無しさん@お腹いっぱい。
01/09/03 23:49ID:kJGORBzsたとえば
$Form{comment} =~ s/くそ/●●/g;
とすれば「くそ」と書き込んだコメントを伏字にできますがこれだと
「へたくそ」も「へた●●」となってしまいます。文節に応じた
文字変換(伏字処理みたいなこと)ってどうすればいいんでしょうか。
既出事項であったらすみません。
0056名無しさん@お腹いっぱい。
01/09/04 02:02ID:lxASoDUYrequire($text)とやると中味のバイト数が返されるのはなぜだ?
教えろ。
0057名無しさん@お腹いっぱい。
01/09/04 23:35ID:hpdQ0NnYなにをどうしたいのさ。
伏せ字でも少し載せて,伏せたいのと伏せたくないのも
載せたほうが答えもらえると思われ。
0058名無しさん@お腹いっぱい。
01/09/05 21:06ID:zThM7aIk$input =~ s/([.]*)/-----$1-----/; #inputを-----で囲みたいです
print "$input\n";
ってやって、、
$.test.pl 111{}222{}333
ってやると
----------111{}222{}333
こうなります、
-----111{}222{}333-----
何故こうならないのでしょうか、
と言うか目的からは程遠い所なんですが、多分バックトラッキングが理解
出来てないからだと思うのですが。
絶対僕の思ったように動かないに決まってます。
■ このスレッドは過去ログ倉庫に格納されています