正規表現道場@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さん辺りが書いてくれるカモ・・・・
0059名無しさん@お腹いっぱい。
01/09/05 21:15ID:ongErcHE$input =~s/(.*)/--------$1---------/;
てゆーか囲むだけなら
$input = '--------' . $input . '---------';
で良いべさ
0060名無しさん@お腹いっぱい。
01/09/05 21:27ID:zThM7aIkえと、それはそうなんですが正規表現の勉強と言う事で (^^
ちなみにevalして
$input =~ s/([.]*)/'-----'.$1.'-----'/e;
こんな風にしても結果は同じなんです。
何か一歩も前に進めない感じで とほほ
0061名無しさん@お腹いっぱい。
01/09/05 22:13ID:L1KgWH9s59が答を書いてるだろがゴルァ
.を[]の中に入れたら任意の1文字じゃねーぞゴルァ
0062名無しさん@お腹いっぱい。
01/09/05 22:37ID:mJCW7B8kとほほつながりでここでも見て勉強すれ。
http://tohoho.wakusei.ne.jp/wwwperl1.htm#Expr
0063名無しさん@お腹いっぱい。
01/09/06 01:36ID:ji/LQ9h6ですけど、 (^^;
しかし上手く動いてくれないんだよなぁ・・・
詳説正規表現って言うのは難しすぎるし
とほほに逝って来ますぅ
0064名無しさん@お腹いっぱい。
01/09/06 01:55ID:Ut37ZYfk(.*)じゃなくて(.+)じゃないの?
0065名無しさん@お腹いっぱい。
01/09/06 02:02ID:jxYvqj8.場合による
0066名無しさん@お腹いっぱい。
01/09/06 02:07ID:Ut37ZYfk(.*)って,どんな時に使うんですか?
文字に反応しない時がありそうなんで,まったく想像がつかないんですが。
0067名無しさん@お腹いっぱい。
01/09/06 06:20ID:sO/Rg6CI0068名無しさん@お腹いっぱい。
01/09/06 06:30ID:jxYvqj8.>>62のリンク先ぐらい見てから聞け。
0069名無しさん@お腹いっぱい。
01/09/08 10:24ID:???0070名無しさん@お腹いっぱい。
01/09/08 13:08ID:Lvui7oF6正規表現の特殊文字 9連発
. (どっと)
*(アスタリスク)
+(ぷらす)
?(くえすちょん)
[(れふとすくえあ
](らいとすくえあ
`(ばっくくおと
$(だら
\(ばくすらしゅ
0071名無しさん@お腹いっぱい。
01/09/08 19:26ID:???大昔backslashをもじった「バクスラ」ってphotonのチームがありましたなぁ
ちなみに「{」「}」と「<」「>」はどう読んでます?
0072名無しさん@お腹いっぱい。
01/09/08 19:47ID:Lvui7oF6らいとかーりーぶらんけっと }
れふとぱーれん (
らいとぱーれん )
0073名無しさん@お腹いっぱい。
01/09/09 14:29ID:NSJpQxzQ□+/
大
どらごんくえすと
0074名無しさん@お腹いっぱい。
01/09/09 20:23ID:???どもでした:-)
>73
ワラタ(笑)
0075名無しさん@お腹いっぱい。
01/09/11 12:31ID:StTUkJnk例えば
************************
とか
■■■■■■■■■■■■
とか
を
****
■■■■
とか短くする正規表現教えてくなさい
0076名無しさん@お腹いっぱい。
01/09/11 12:41ID:???#! perl
$str = '■■■■■■■■■■■■';
$str =~s/(?:■){2,}/■■/;
print $str;
0077名無しさん@お腹いっぱい。
01/09/11 18:42ID:WwJLyJnk0079petronius
01/09/11 20:27ID:???しかし、これじゃ任意じゃないな。スマソ。
0080名無しさん@お腹いっぱい。
01/09/11 21:34ID:???$str =~ s/(.|..)\1+/$1$1/g;
0081名無しさん@お腹いっぱい。
01/09/12 02:40ID:???0082名無しさん@お腹いっぱい。
01/09/24 10:09ID:???詳説買ってきたよ〜 でも難しい (鬱
0083名無しさん@お腹いっぱい。
01/09/25 05:55ID:I2K.uRSsthis is a pen
を
This Is A Pen
とかにしたいの。よろしく〜。
0084JAPU@CGI関連のコンテンツは移動した...
01/09/25 06:16ID:???...と思ったけど、正規表現スレッドなので、
s/(?<!\S)(.)/uc $1/eg;
としておこう。:-)
# 詳説正規表現は難しいね。
0085名無しさん@お腹いっぱい。
01/09/25 12:35ID:???別解で
s/(\w+)/ucfirst $1/eg;
0086名無しさん@お腹いっぱい。
01/09/26 00:14ID:???0087名無しさん@お腹いっぱい。
01/10/04 15:47ID:KFx.YrhY正規表現でShift_JISの半角カナを全角カナに変換することは
できますでしょうか。
ちなみに最初は下記のようなのを書いてみたけど、Shift_JISの下位バイトに
半角カナに一致するコードが含まれることがあって失敗しました。
%han2zen = ( 'ア'=>'ア', …以下半角=>全角の対応 );
my $re_hankana = '[。-゚]';
my $re_dakuten = '[゙゚]';
#成功例
my $good = "(゚Д゚)ハァ?(゚Д゚)ハァ?";
$good =~ s/($re_hankana$re_dakuten?)/$han2zen{$1}/g;
print "$good\n";
#失敗例
my $bad = "(゚Д゚)ほげ?(゚Д゚)ほげ?";
$bad =~ s/($re_hankana$re_dakuten?)/$han2zen{$1}/g;
print "$bad\n";
008887
01/10/04 15:51ID:???my %han2zen = (
'。'=>'。', '「'=>'「', '」'=>'」', '、'=>'、', '・'=>'・', 'ヲ'=>'ヲ', 'ァ'=>'ァ',
'ィ'=>'ィ', 'ゥ'=>'ゥ', 'ェ'=>'ェ', 'ォ'=>'ォ', 'ャ'=>'ャ', 'ュ'=>'ュ', 'ョ'=>'ョ',
'ッ'=>'ッ', 'ー'=>'ー', 'ア'=>'ア', 'イ'=>'イ', 'ウ'=>'ウ', 'エ'=>'エ', 'オ'=>'オ',
'カ'=>'カ', 'キ'=>'キ', 'ク'=>'ク', 'ケ'=>'ケ', 'コ'=>'コ', 'サ'=>'サ', 'シ'=>'シ',
'ス'=>'ス', 'セ'=>'セ', 'ソ'=>'ソ\','タ'=>'タ', 'チ'=>'チ', 'ツ'=>'ツ', 'テ'=>'テ',
'ト'=>'ト', 'ナ'=>'ナ', 'ニ'=>'ニ', 'ヌ'=>'ヌ', 'ネ'=>'ネ', 'ノ'=>'ノ', 'ハ'=>'ハ',
'ヒ'=>'ヒ', 'フ'=>'フ', 'ヘ'=>'ヘ', 'ホ'=>'ホ', 'マ'=>'マ', 'ミ'=>'ミ', 'ム'=>'ム',
'メ'=>'メ', 'モ'=>'モ', 'ヤ'=>'ヤ', 'ユ'=>'ユ', 'ヨ'=>'ヨ', 'ラ'=>'ラ', 'リ'=>'リ',
'ル'=>'ル', 'レ'=>'レ', 'ロ'=>'ロ', 'ワ'=>'ワ', 'ン'=>'ン', '゙'=>'゛', '゚'=>'゜',
'ガ'=>'ガ', 'ギ'=>'ギ', 'グ'=>'グ', 'ゲ'=>'ゲ', 'ゴ'=>'ゴ',
'ザ'=>'ザ', 'ジ'=>'ジ', 'ズ'=>'ズ', 'ゼ'=>'ゼ', 'ゾ'=>'ゾ',
'ダ'=>'ダ', 'ヂ'=>'ヂ', 'ヅ'=>'ヅ', 'デ'=>'デ', 'ド'=>'ド',
'バ'=>'バ', 'ビ'=>'ビ', 'ブ'=>'ブ', 'ベ'=>'ベ', 'ボ'=>'ボ',
'パ'=>'パ', 'ピ'=>'ピ', 'プ'=>'プ', 'ペ'=>'ペ', 'ポ'=>'ポ',
);
0089名無しさん@お腹いっぱい。
01/10/04 17:00ID:???jcodeじゃだめか?
ってここは正規表現スレだな
0090名無しさん@お腹いっぱい。
01/10/04 22:34ID:a.Dq8AyI$hoge =~ s/([\x81-\x9F][\x40-\x7E]|[\xE0-\xEF][\x80-\xFC]|[\xA1-\xDF]|.)/$han2zen{$1} or $1/egs;
いつも通りこう書いたんだけど、$bad はやっぱり上手くいかない。
縦棒って最初にマッチした奴にマッチして終わりじゃなかったっけ?
誰か教えてくれ。
0091名無しさん@お腹いっぱい。
01/10/05 04:22ID:???>縦棒って最初にマッチした奴にマッチして終わり
そうだよ。
うえのやつは全角相当のパターンが違うんでないの。
見やすくするためスペース入れると、
×( [\x81-\x9F][\x40-\x7E] | [\xE0-\xEF][\x80-\xFC] | [\xA1-\xDF] | . )
○( [\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC] | [\xA1-\xDF] | . )
だと思う。少なくとも$badはこれでいけた。
009290
01/10/05 20:50ID:???ああそうかぁ。サンクス。
http://ash.or.jp/ash/tips_prog/htm/code.htm
ココみてパターン書いたんだけど、見方間違えてたよ。
そういえば最後のドットは要らないかな、と思った。
009387
01/10/07 17:56ID:G6cvoZz6ありがとー。
009487
01/10/07 18:28ID:???my %han2zen = { >>88参照 };
my $re_zen = '[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'; # 全角
my $re_han = '[\xa1-\xdf]'; # 半角カナ
my $re_dak = '[\xde\xdf]'; # 半角の濁点と半濁点
my $s = "(゚д゚)ウマー(゚Д゚)げ?";
$s =~ s/($re_zen|$re_han$re_dak?)/$han2zen{$1} or $1/ge;
print "$s\n";
009687
01/10/08 01:19ID:???# Shift_JISの半角カナを全角に変換する
my %han2zen = { >>88, 'ヴ'=>'ヴ' } # 88のに1コ追加
my $re_zen = '[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'; # 全角
my $re_han = '[\xa1-\xdf]'; # 半角カナ
my $re_dak = '[\xb3\xb6-\xc4\xca-\xce]\xde'; # 半角カナ濁点
my $re_hdak = '[\xca-\xce]\xdf'; # 半角カナ半濁点
my $s = "(゚д゚)ヴマ゙ー(゚Д゚)げ?";
$s =~ s/($re_zen|$re_dak|$re_hdak|$re_han)/$han2zen{$1} or $1/ge;
print "$s\n";
0097名無しさん@お腹いっぱい。
01/10/10 00:05ID:???ttp://hogehoge/cg\img.jpg
を↓にリダイレクトしたい。
ttp://hogehoge/cg/img.jpg
しかし↓これだと動かない。
RedirectMatch ^/([^\?]*)\\(.*)$ /$1/$2
なぜだか判る?
0098名無しさん@お腹いっぱい。
01/10/10 00:06ID:???0099名無しさん@お腹いっぱい。
01/10/10 00:09ID:???しかしIEだとちゃんと表示できるからユーザーは気が付かずに使っちゃうのよ。
他の正常なブラウザだと404になるからリダイレクトしたいの。
010090
01/10/10 01:00ID:???最初の ^/ は、 / にしないと駄目でない?
010190
01/10/10 01:04ID:???0102名無しさん@お腹いっぱい。
01/10/10 01:54ID:???として、掲示板スクリプトの書き込みの中にあるURLに
こうやって自動リンク貼ってる。↓
$data =~ s/($http_URL_regex)/<a href="$1">$1<\/a>/go;
現状だと
http://www.test.com/dir/index.html が
<a href="http://www.test.com/dir/index.html>http://www.test.com/dir/index.html</a> に
置き換わるだけだけど、URL表示の/(スラッシュ)を「<wbr>/」に
置き換えるようにしたい。
具体的には、上の例でいうと
<a href="http://www.test.com/dir/index.html>http://www.test.com<wbr>/dir<wbr>/index.html</a>
って感じにしたい。
一行が長くてゴメソ。分かる人教えて。
0105名無しさん@お腹いっぱい。
01/10/12 02:04ID:???分かるもなにも、その$http_URL_regexってやつを
見せてもらわんと。そんなに長いんか?
も、もしかして、大崎氏の「Perlメモ」にある
ものすごい正規表現のことかな。。。
0106名無しさん@お腹いっぱい。
01/10/12 02:04ID:???$data =~ s/($http_URL_regex)/&convurl($1)/ge;
sub convurl {
my($url) = shift;
my($str) = qq{<a href="$url">};
$url =~ s|(?<!/)/(?!/)|<wbr>/|g;
$str .= qq{$url</a>};
}
こんなんしか思いつかんダサ
0107104
01/10/12 09:48ID:???bingo...
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
にあるやつです。
>>106
うまくいった!ありがとう!
0108名無しさん@お腹いっぱい。
01/10/12 12:46ID:???^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
リンク張るならここまでだろ。2chださい。
0109名無しさん@お腹いっぱい。
01/10/12 13:13ID:???quoteなし
<a href=http://hoge.com/hoge.html>http://hoge.com<wbr>/hoge.html</a>
quoteあり
<a href="http://hoge.com/hoge.html">http://hoge.com<wbr>/hoge.html</a>
quote閉じ忘れ
<a href="http://hoge.com/hoge.html>http://hoge.com<wbr>/hoge.html</a>
0112名無しさん@お腹いっぱい。
01/10/15 01:29ID:???0113名無しさん@お腹いっぱい。
01/10/15 06:28ID:???その心は「クォート閉じ忘れやクォートなしは不正なのに、
それに対応していない2chを批判するのは馬鹿」という理解でよいですか。
0114名無しさん@お腹いっぱい。
01/10/15 08:08ID:???<a href="http://example.com/">http://example.com/</a>
ということでお題。
&は含むけど<や>は含まないように
リンクを張る正規表現は?
0115名無しさん@お腹いっぱい。
01/10/15 08:11ID:???$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"$1\:$2\" target=\"_blank\">$1\:$2<\/a>/ig;
0116113
01/10/15 09:07ID:???いや、そういう意味で言ってるんだとしたら間違ってるよ。
っていいたかったの。
> &は含むけど<や>は含まないように
> リンクを張る正規表現は?
URLという意味では<が含まれてても問題(よね?)と思うので、
<や>をはじく必要は無いと思うけど・・・
ちょっと考えるよ。
0117名無しさん@お腹いっぱい。
01/10/15 09:12ID:???$116 =~ s/(問題)/$1無い/;
$116 =~ s/</</g;
$116 =~ s/>/>/g;
0118名無しさん@お腹いっぱい。
01/10/15 10:07ID:???問題あるよ。
http://www.isi.edu/in-notes/rfc2396.txt
0119名無しさん@お腹いっぱい。
01/10/15 10:08ID:???< や > が含まれてると問題あるけど、htmlソース上は
< や > だから含まれてしまうのを
修正したいってことなんだけど。
0120113
01/10/15 10:18ID:???リンク張ってるのがまずいんですね。
リンク張りつつ < > 除去すれば正確になるのかな。
s{
((?:https?|ftp|gopher|telnet|whois|news)://[-_.!~*'()a-zA-Z0-9;/?:\@&=+\$,%]+)
| (<) | (>)
}{
$1 ? "<a href=\"$1\">$1</a>" :
$2 ? '<' :
$3 ? '>' :
''
}xeg;
とかはどうですか?
0121113
01/10/15 10:37ID:???s{(
(?:https?|ftp|gopher|telnet|whois|news)://
(?:[-_.!~*'()a-zA-Z0-9;/?:\@=+\$,%] | &(?![lg]t;) )+
)}
{<a href=\"$1\">$1</a>}xg;
0122名無しさん@お腹いっぱい。
01/10/15 11:23ID:???s{(
(?:(?:https?|ftp|gopher|telnet|whois)://|news:)
(?:[-_.!~*'()a-zA-Z0-9;/?:\@=+\$,%] | &(?![lg]t;) )+
)}
{<a href=\"$1\">$1</a>}xg;
0123名無しさん@お腹いっぱい。
01/10/15 11:35ID:???s{(
(?:(?:https?|ftp|gopher|telnet|whois)://|news:)
(?:[-_.!~*'()a-zA-Z0-9;/?:\@=+\$,%#] | &(?![lg]t;) )+
)}
{<a href=\"$1\">$1</a>}xg;
0124名無しさん@お腹いっぱい。
01/10/15 11:51ID:???これで十分かな?
s{((?:https?|ftp)://(?:[-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}{<a href="$1">$1</a>}g;
どっちにしても中途半端だけど。
0125名無しさん@お腹いっぱい。
01/10/15 12:21ID:???s{((?:https?|ftp)://(?:[-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}{<a href="$1" target=_blank>$1</a>}go;
0126名無しさん@お腹いっぱい。
01/10/15 12:57ID:???ちがうの?
0127名無しさん@お腹いっぱい。
01/10/15 13:01ID:???0128名無しさん@お腹いっぱい。
01/10/19 22:45ID:SauUPYVx0129名無しさん@お腹いっぱい。
01/10/20 00:13ID:???#詳説買って来たけどかなり本棚の肥やしになりそうな感じ・・・
0130名無しさん@お腹いっぱい。
01/10/20 08:13ID:???0131名無しさん@お腹いっぱい。
01/10/20 16:58ID:rS0gfeFk0132名無しさん@お腹いっぱい。
01/10/20 22:31ID:???良く突っ込まれる例:
あめぞうって、2chとかMAGABBSと同じタイプ?
0133名無しさん@お腹いっぱい。
01/10/25 02:00ID:GZ9i4shVhttp://www.2ch.
net/
<a href="http://www.2ch.net/">http://www.2ch.net/</a>
0134名無しさん@お腹いっぱい。
01/10/25 02:24ID:???0135名無しさん@お腹いっぱい。
01/10/25 17:47ID:???0136名無しさん@お腹いっぱい。
01/10/25 17:56ID:???0137名無しさん@お腹いっぱい。
01/10/26 09:05ID:+A/kF3WN0138名無しさん@お腹いっぱい。
01/10/26 11:48ID:???read.cgiでは直ってるみたいね。
0139名無しさん@お腹いっぱい。
01/10/26 11:54ID:???0140名無しさん@お腹いっぱい。
01/10/27 00:02ID:7lO0RLH00141名無しさん@お腹いっぱい。
01/10/28 01:33ID:???0142名無しさん@お腹いっぱい。
01/11/08 04:45ID:???詳説難しいって言う意見が有るけど(確かに ^-^; )
俺は最初詳説買ってチンプンカンプンだったんで、ゆたか氏の正規表現入門を
買ったよ、それから詳説読んだら理解がすすみやすかった
0143名無しさん@お腹いっぱい。
01/11/17 19:17ID:BIcYTt7w0144吉野家シリーズでいってみよう!
01/11/17 22:44ID:Sr4+rAbn先日、正規表現のエンジン書いたんです。NFA.
そしたら単語境界の処理とかどうとか聞いてくるんです。
もうね、アホかと。馬鹿かと。
お前な、正規表現で表せねー機能拡張するんじゃねーよ、ボケが。
機能拡張だよ、機能拡張。
なんか文字クラスかあるし。
よーしパパ繰り返し回数指定サポートだー、とか言ってるの。
ここでぶち切れたね。
正規表現はな、状態数有限、男同士でケツを挿すか挿されるか
そこがいーんじゃねーか、状態数爆発させる奴はすっこんでろ。
あのな、E{8}で8回繰り返すなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何がPerlの拡張正規表現だ。
お前は本当に前処理展開が必要なのかと問い詰めたい。
小一時間問い詰めたい。
0145sage
01/11/17 22:57ID:???端折らないでちゃんとやってよ〜。
0146名無しさん@お腹いっぱい。
01/11/18 00:31ID:???[0-9a-z]{1,8}
0147143
01/11/18 02:39ID:???0148名無しさん@お腹いっぱい。
01/11/18 02:44ID:???何かネタかと思ったが
0149名無しさん@お腹いっぱい。
01/11/18 03:00ID:???0150名無しさん@お腹いっぱい。
01/11/18 04:31ID:???BBSに削除機能付けるから仕方なくって所だな。。。
0151ひろゆき@管直人
01/11/18 04:41ID:???0152名無しさん@お腹いっぱい。
01/11/18 13:41ID:???「バオー来訪者」に出てきた九官鳥のほうが正しくお礼を言えてるぞ。
0153名無しさん@お腹いっぱい。
01/11/18 17:44ID:???オモロイ
0154名無しさん@お腹いっぱい。
01/12/12 17:13ID:???c:\Program Files\hoge.exe
c:\Program Files\hankaku.mp3
c:\Program Files\全角.mp3
を抽出する方法キボンヌ
m/"\S.*?\S"/g
だと
"c:\Program Files\hoge.exe"
にヒットします.
"なしでヒットする方法キボンヌ(後方参照を使わずに)
0155名無しさん@お腹いっぱい。
01/12/12 17:22ID:9gYD63hd0156名無しさん@お腹いっぱい。
01/12/12 18:22ID:???0157名無しさん@お腹いっぱい。
01/12/12 18:35ID:???目がうろこ
じゃあ
"hoge\\asdf\"hage"
から
hoge\\asdf\"hage
を抜き出す方法って無い?
0158名無しさん@お腹いっぱい。
01/12/12 18:38ID:???そういうファイルがあるってこと?
ファイル名に使えない文字だよ?>"
■ このスレッドは過去ログ倉庫に格納されています