トップページphp
986コメント301KB

正規表現道場@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さん辺りが書いてくれるカモ・・・・
0452nobodyさん02/07/18 00:57ID:???
>>449
WikiWiki ですか?いいもの出来たら公開してね〜
0453nobodyさん02/07/18 19:16ID:???

$dataの中に、id=とurl=とname=が含まれていて、なおかつ=が3個含まれていたら
真の値を返すようにしたいのですがどうやるのでしょうか?

(($data =~ /id= && url= && name=/) && ($data =~ /={3}/)) || exit;

045445302/07/18 19:25ID:???
すいません間違えました。

id=とurl=とname=が含まれていて、なおかつ&が2個含まれていたらの場合です。
0455nobodyさん02/07/18 22:43ID:pCMKii71
($data =~ /(?=.*id=)(?=.*url=)(?=.*name=)/ && $data =~ /^(?:[^&]*&[^&]*){2}$/)
0456 ◆Smt8k/ss 02/07/19 00:01ID:???
($data=~ /(?=.*id=)(?=.*url=)(?=.*name=)/ && $data=~ tr/&//== 2);
0457 ◆JAPH9PWA 02/07/19 00:12ID:???
フツーに
$_ = $data;
(/id=/ and /=url/ and /name=/ and (tr/&// == 2))
でいい気が。
0458 ◆JAPH9PWA 02/07/19 00:13ID:???
s/=url/url=/
0459nobodyさん02/07/19 13:27ID:SM5AMgkw
リンクを張りたいのですが。http://aaa.bbb.ccc/ddd/ee.ff

但し、URLの中に「AaA」又は「BaB」という文字列があるならば、
リンクさせない方法はどうすればいいのでしょうか。
http://aaa.bbb.ccc/ddd/ee.ffAaA
http://aBaBaa.bbb.ccc/ddd/ee.ff

$mes=~s/http:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http:\/\/\:$2\" target=\"_blank\">http:\/\/\:$2<\/a>/ig;
0460nobodyさん02/07/19 13:56ID:???
/AaA|BaB/;
0461nobodyさん02/07/19 14:04ID:???
>>459
大文字にマッチさせたくないんだったら、
\wをa-z0-9、iを削除でいいんじゃないの?
どうでもいいけど、エスケープしすぎ。
0462nobodyさん02/07/19 14:07ID:???
区切りに / でなく | でもつかえばエスケープする回数も減るだろ。
0463nobodyさん02/07/19 14:55ID:???
傾斜つまようじ症候群というやつですな。
0464nobodyさん02/07/19 15:37ID:???
掲示板で特定のタグ「以外の」タグが書き込まれたら真を返す, というのがやりたいのですが.
とりあえず "<" で始まり, こちらが指定(a, em, dl, etc...)したもの以外の文字列(font, blink, hogehoge, etc...)があったら, というカンジで.
0465nobodyさん02/07/19 15:39ID:???
unless ( $_ =~ /<(a|img|font).*>/ )
0466nobodyさん02/07/20 05:20ID:???
>>465
正規表現わからんなら書くな。
0467nobodyさん02/07/20 07:10ID:???
if(/<(?!\/|a\s|img|font)[^>]*>/g);
0468間違えた02/07/20 07:14ID:???
if(/<(?!\/|a\s|img|font)[^>]*>/i);

0469nobodyさん02/07/20 14:18ID:???
>>468
正規表現わからんなら書くな。
0470nobodyさん02/07/20 16:31ID:???
>>466
>>469
そう言うおまいも正規表現わからんくせに書くな。
0471.&rlo;正規表現は簡単ね&lro;02/07/20 17:15ID:???
>>470
>>466>>469が正規表現わかってないという根拠は?
少なくとも>>468のようなとんちんかんな正規表現を見ての意見だと思うが…。
0472あぼーんNGNG
あぼーん
0473薄らキリストが見える 02/07/20 19:06ID:???
34 :(*゚Д゚)さん :02/07/20 14:53 ID:???
http://eclat.gaiax.com/home/rx72watanabe
マターリ観察中。。。。。 盛り上って来たら一気に攻撃をしかけろ!!!!


35 ::02/07/20 18:45 ID:???
http://isweb44.infoseek.co.jp/family/kmk25y/km-aa.swf
http://isweb44.infoseek.co.jp/family/kmk25y/km-aa2.swf
http://isweb44.infoseek.co.jp/family/kmk25y/km-aa3.swf
http://isweb44.infoseek.co.jp/family/kmk25y/km-aa4.swf
http://isweb44.infoseek.co.jp/family/kmk25y/klist1.swf
http://isweb44.infoseek.co.jp/family/kmk25y/klist2.swf


0474nobodyさん02/07/20 22:23ID:???
つーか正規表現って最初に訳した香具師ドキュソだな
もっと適切な日本語使ってくれよ
0475nobodyさん02/07/21 16:35ID:???
って別に検索に用いるためだけのじゃないし。
言語処理関係の勉強すれば正規表現ってのは
自然な訳だと思えるようになるよ。
0476nobodyさん02/07/22 00:29ID:???
regular expression
正規 表現

これを自然な訳と思えるあなたとは日本語で話したくありません
0477♦#02/07/22 14:53ID:???
>>476
じゃあ、英語かなんかで話したいのか?
0478nobodyさん02/07/22 20:20ID:???
$c =~ m|[^A-Za-z0-9;/&?:@=+$,\-_.!~*'()%]|

で、2つの | はどういう役割をしているのでしょうか?
0479nobodyさん02/07/22 20:42ID:???
>>478
$c =~ /[^A-Za-z0-9;/&?:@=+$,\-_.!~*'()%]/
でもいいし
$c =~ m{[^A-Za-z0-9;/&?:@=+$,\-_.!~*'()%]}
でも何でもいいよ。
0480nobodyさん02/07/22 20:42ID:???
 / 以外も区切りに使えることを知らないのか?結局正規表現だよ。
048147902/07/22 20:51ID:???
$c =~ /[^A-Za-z0-9;/&?:@=+$,\-_.!~*'()%]/
はだめでした。
$c =~ /[^A-Za-z0-9;\/&?:@=+$,\-_.!~*'()%]/
です。
デリミタは普通 / を使います。この場合先頭の m は省略できますが、
中身のパターンに / が含まれる場合は \/ というようにエスケープしないといけません。
それを避けるためにデリミタを / 以外のもの | に変えているのです。
048247802/07/22 22:29ID:???
>>479-481
空白文字を除く任意の非英数字が
区切り文字に使えるとは知りませんでした。
どうもありがとうございました。
0483nobodyさん02/07/23 02:19ID:XF1QbVW3
オレも勉強になった。
0484nobodyさん02/07/23 04:14ID:8Y4x0Hwt
$data = '1<br>23<Br>3<br>45<br><br>666<br>
54<br>354<br>54<Br>43<br>';

の時、例えば
6個目の<br>から先を削除する方法ってわかります?
理想結果はこんな感じです。

$result = '1<br>23<Br>3<br>45<br><br>666<br>';

0485nobodyさん02/07/23 04:36ID:???
>>484
最後の<br>が入んないけど、まぁこんなのどうでしょう。
my $data = ...;
my $foo = join( "<br>", (split( /<br>/i, $data))[0..5] );
048648402/07/23 04:58ID:???
できました!ありがとうございました。
0487nobodyさん02/07/23 20:42ID:???
>>476
言語処理の勉強するか首つって死んじまえ。
0488nobodyさん02/07/25 17:43ID:???
さっくりとage
0489nobodyさん02/07/25 17:55ID:???
>>488
sageてんじゃねえか!
0490nobodyさん02/07/25 18:09ID:???
$_= 'この板、人いっぱいだね';

s/っぱいだ/ない/;
0491nobodyさん02/07/25 19:52ID:???
CGIに適したPerl以外の言語は何?Ruby?
049249102/07/25 19:53ID:???
誤爆った
0493nobodyたん02/07/25 20:26ID:???
perl の「正規表現」って実は正規表現ではない罠。
0494_02/07/28 16:28ID:/dbFo95o
perlで文字列中の一番後ろの()内を切り出したいのですが、
どうもうまくいきません。

(A)B
B(A)
(C)B(A)
(A)B(C)
B(C)(A)
A

いずれもAを切り出したくて、

if ($foo =~ /(\(([^\(]+)\))+$/) {
$foo = $2;
};

とかやってみたのだけど、なんか変です。
簡単に記述できそうな気がするのだけど……。
0495nobodyさん02/07/28 17:24ID:???
>一番後ろの()内を切り出したい
とあるのに
>(A)B(C)
においてもAを切り出したいって意味わからん。
0496nobodyさん02/07/28 17:25ID:???
while(<DATA>){
chomp;
my $rev = reverse $_;
$rev =~ m/^.*?\)(.*?)\(/ and print "[$_]--$1", "\n";
}
__DATA__
(A)B
B(A)
(C)B(A)
(A)B(C)
B(C)(A)
A
0497nobodyさん02/07/28 18:07ID:???
>>496
まわりくどっ!
049849402/07/28 18:13ID:???
>>495
あああ、それ無し無し。恥ずかしい間違いでした。

>>496
ありがとうございます。
なるほど、いっぺんreverseするんですね。
どこかで使えそうな手なので、覚えておきます。
0499nobodyさん02/07/28 18:26ID:???
>>498
ほんとにそれで納得できた? リバースは(A)のように括弧内の文字が1文字固定
ならいいんだろうけど…。
0500nobodyさん02/07/28 18:55ID:???
s#\(A\)(\r\n|\r|\n)?$#$1#;
0501nobodyさん02/07/28 18:59ID:???
>>500
質問?
050250002/07/28 19:03ID:???
切り出すってそう言う意味かあ
はは
050349402/07/28 20:00ID:???
>>499
最後にもう一回reverseしてやれば良いように思いますが、
甘いですか?
0504nobodyさん02/07/28 20:07ID:???
>>503
まぁ、満足ならそれでいいけど。効率よりもとにかく処理ができればいいなら。
050549402/07/28 20:16ID:???
>>504
reverseしないでマッチさせられないか、無い頭しぼって考えました。
/^.*\((.*?)\)/
駄目ですか?
0506nobodyさん02/07/28 20:19ID:???
>>505
文字列の最後が必ず ) で終わる?
050749402/07/28 20:22ID:???
>>506
いま扱ってるデータだと終わります。
が、この先、そういうのが出てこないとも限らない……
出直してきます。
0508nobodyさん02/07/29 08:19ID:???
おはようございます。

my @values = qw[(A)B B(A) (C)B(A) B(C)(A) A B(C(A)DEF BC(D(A)))E) BC(A)(D B)C(D(AAA)(E(FG BC(A)()];

for my $value (@values) {
my @hits = $value =~ /\(([^\(\)]*)\)/g;
print "$value = ",$hits[$#hits],"\n";
}

(A)B = A
B(A) = A
(C)B(A) = A
B(C)(A) = A
A =
B(C(A)DEF = A
BC(D(A)))E) = A
BC(A)(D = A
B)C(D(AAA)(E(FG = AAA
BC(A)() =

…こういう感じであってますか?
050949402/07/29 12:19ID:???
>>508
とりあえず()を全部マッチさせてリストにいれておくわけですね。
なるほど。思ったより簡単にできるものですね。
効率とか速度とかいわれると、よく分からないけれど……。
0510nobodyさん02/07/29 19:35ID:???
不必要な配列をつくるし、
必要以上にパターン試すから、
メモリも多く使うし、速度もわるいよ、、、。
0511nobodyさん02/07/29 23:05ID:MEr3AvIi
すみません、いまいちタコなのですが、
メールのsubjectなんかで、たとえばこんなのがあったとします。
[ABCDE:0110]ああ〜〜
他のパターンとして、
[ABCDE:]いい〜〜
というのもあるとします。まれに、
Re:[ABCDE:0110]うう〜〜
なんてのもあるとします。
これの数字部分“0110”を取得したいのですがうまくいきません。
$subject=~s/.*\[.*:(\d*)\].*/$1/;
なんてやったら$subject == "" になってしまいます。
いまは仕方なく、
($dummy,$subject)=split(/\[/,$subject);
($subject,$dummy)=split(/\]/,$subject);
($dummy,$subject)=split(/\:/,$subject);
なんてひどいコードですが・・・
どうも、.*ってのを使った瞬間全部がそれにマッチしてしまう気がします。
やはり正規表現でエレガントに行ってみたいのですが、どんな感じになるのでしょう?
0512nobodyさん02/07/29 23:22ID:???
($num)= $subject=~ /:(\d*)]/;
051351102/07/29 23:27ID:???
>>512
ありがとうございます。
なるほど。余計なところまで書きすぎだったわけですね。ありがとうございました!(^^)/
0514age02/07/31 10:46ID:p4UQxNW6
Googleの検索結果ページの
●●件中 ●●- ●●件目 検索にかかった時間●●秒
の行から特定の単語を切り出す正規表現を作っています。
例えば、
re = /日本語のページから(.*)を検索しました。/
re2 = /(\d+)件中(\d+) - (\d+)件目/
re3 = /検索にかかった時間(\d\.\d\d)秒/
のように3つの正規表現に分けて生成するとマッチします。
しかし、
re = /日本語のページから(.*)を検索しました。\s\s約?(\d+)件中(\d+) - (\d+)件目・・?検索にかかった時間(\d\.\d\d)秒/
のようにまとめるといくら頑張ってもマッチしません。

使用言語はrubyですが、
日本語の正規表現ってあまり長くならない方がいいのでしょうか?
0515nobodyさん02/07/31 10:47ID:p4UQxNW6
Googleの検索結果ページの
●●件中 ●●- ●●件目 検索にかかった時間●●秒
の行から特定の単語を切り出す正規表現を作っています。
例えば、
re = /日本語のページから(.*)を検索しました。/
re2 = /(\d+)件中(\d+) - (\d+)件目/
re3 = /検索にかかった時間(\d\.\d\d)秒/
のように3つの正規表現に分けて生成するとマッチします。
しかし、
re = /日本語のページから(.*)を検索しました。\s\s約?(\d+)件中(\d+) - (\d+)件目・・?検索にかかった時間(\d\.\d\d)秒/
のようにまとめるといくら頑張ってもマッチしません。

使用言語はrubyですが、
日本語の正規表現ってあまり長くならない方がいいのでしょうか?
0516mage02/07/31 10:53ID:p4UQxNW6
半角スペース2個を全角スペース1個で置換することって
出来ますか?
できるかどうかが知りたいです。
051747902/07/31 11:02ID:???
>>516
できる。
0518nobodyさん02/07/31 12:09ID:???
>>515
タグが入っていることを考慮しているかい?
051951502/07/31 12:30ID:???
>>518 タグはw3m -dump で取り除いています。
--------------------------------
!/usr/bin/env ruby
keyword_file = ARGV.shift
suffix_file = ARGV.shift
# 正規表現生成
re = /日本語のページから(.*)を検索しました。/
re2 = /(\d+)件中(\d+) - (\d+)件目/
re3 = /検索にかかった時間(\d\.\d\d)秒/
File.foreach(keyword_file) do |kw|
File.foreach(suffix_file) do |sf|
w3m = IO.popen("w3m -dump 'http://www.google.com/search?ie=euc-jp&oe=euc-jp&hl=ja&meta=lr=lang_ja&num=10&q=#{kw}+#{sf}'","r")
  pat=/件中/
  w3m.each_line do |line|
   if pat =~ line
    re.match(line)       
    key = $1
    re2.match(line)
    cnt,from,to = $1,$2,$3
    re3.match(line)
    second = $1
    printf("%16s %10s  => %5d件 %10s 秒 \n",kw.chop,sf.chop,cnt,second)
   end
  end
  w3m.close
 end
end
------------------------
だとOKですが、
正規表現を一つにするとだめっぽいのです。
052051502/07/31 12:38ID:???
>>519
w3mでパイプしている奴を
Net::HTTPで高速化させたいですが、正規表現で
引っかかります。

なお、ほしい部分の周辺は
以下のようなHTMLです。
----------------
<table width=100% border=0 cellpa dding=1 cellspacing=0 bgcolor=#3366cc><tr><td bgcolor=#3366cc nowrap><font size=-1 color=#ffffff>
<b>日本語</b>のページから<b>hoge</b>を検索しました。 </font></td>
<td bgcolor=#3366cc align=right nowrap>
<font size=-1 color=#ffffff>約<b>37,500</b>件中<b>1</b> - <b>10</b>件目 ・検索にかかった時間<b>0.54</b>秒</font></td></tr></table>
-------------------------------------
#!/usr/bin/env ruby
require 'net/http'
host = 'www.google.co.jp'
path = '/search?num=10&lr=lang_ja&q=hoge'
http = Net::HTTP.new(host)
page=http.get(path)[1].delete("\n")
print page.scan(%r|ffffff><b>日本語.*秒</font>|i)[0].gsub(%r|<.*?>|,'')
-------------------------------------
rubyのscanの使い方が違うのかな?

もう少し、勉強してきます。
0521”管理”人04202/08/03 02:59ID:???
>>520 さんは、スレッド 【Ruby】RubyでCGI   http://pc.2ch.net/test/read.cgi/php/988948655
とのマルチポストです。
速やかに回線を切って首を吊って下さい。
0522nobodyさん02/08/05 17:55ID:???
チョッチュネー、下がり過ぎッチュネー!
0523nobodyさん02/08/12 04:22ID:???
なにも言うな! あげとく。
0524nobodyさん02/08/16 21:56ID:???
すみません、「<」と「>」の間に挟まれる文字(半角英数字、記号含む)を抜き出す
というのはどうすればいいんでしょう?
0525nobodyさん02/08/16 22:11ID:???
>>524
ガイシュツ
0526nobodyたん02/08/19 12:47ID:???
@hoge = ($str =~ /<(.*?)>/g);
0527nobodyさん02/08/20 11:47ID:???
0001海
0003水着
0005スイカ
0002花火




というデータが入った配列があって
これをGrepで
0003以上(0003水着 0005スイカ)のデータを
抽出したいのですが
どのように記述してよいのかわかりません。
>= とか <= とかは正規表現では使えないですよね?

全件ループしてIF文で抽出してもよいのですが
Grepの方が速い?と思い質問させていただきました。お助け下さい。
0528nobodyさん02/08/20 11:55ID:???
@result= grep($_ gt '0003', <DATA>);
052952802/08/20 12:00ID:???
間違った
@result= grep($_ ge '0003', <DATA>);
0530nobodyさん02/08/20 17:19ID:???
>>528さん
おぅ!!!!!完璧です!!!感謝!!!!
わかると簡単だけど、最高に感謝です!!

あなたに幸がある事を祈ります!!!
本当にありがとうございました。<(..)>
0531nobodyさん02/08/26 16:09ID:???

$b =(?=.*犬)(?=.*柴):

ループ開始
 if ($a ~ /$b/){処理}
ループ終了

ある配列をループさせて $a にその値を入れて
数千回ループさせて検索しているのですが
ものすごく遅いです。

やりたい事は $aの文字列に ある文字(複数)があるかを高速に
検索したいです

もっと高速に検索する方法はないでしょうか。
ちなみに $b の部分は検索条件が何個でも対応できるようにしたいです。
どなたかお願いします、、、
0532nobodyさん02/08/26 16:36ID:???
>>531
index連呼。
0533nobodyさん02/08/27 09:53ID:???
>>532さん
index連呼ですか?
すいません。どのような意味なのでしょうか。。。

条件の数だけループして普通通り検索すると言うことでしょうか。
053453302/08/27 09:58ID:???
すいません。
文字列検索の index(STR,SUBSTR) ですね。
やはり単純にそれがよいのでしょうか。

index連呼で検索するのと
=~ // 連呼で検索するのは理論上はどちらが早いのでしょうか。
0535nobodyさん02/08/27 11:17ID:C50HKFyh
>>534
まず試せば?

$a = 'sadfasfj犬okewrworwa';#含まれない
$aa = 'sadf柴asfj犬okewrworwa';#含まれる

use Benchmark;
timethese(300000,{
1=>q{if ($a =~ /(?=.*犬)(?=.*柴)/){$c = 0;}},
2=>q{if ($aa =~ /(?=.*犬)(?=.*柴)/){$c = 0;}},
3=>q{if(index($a,'犬') >= 0 && index($a,'柴') >= 0){$c = 0;}},
4=>q{if(index($aa,'犬') >= 0 && index($aa,'柴') >= 0){$c = 0;}}
});

#Benchmark: timing 300000 iterations of 1, 2, 3, 4...
#1: 13 wallclock secs (12.53 usr + 0.00 sys = 12.53 CPU) @ 23944.45/s (n=300000)
#2: 2 wallclock secs ( 2.60 usr + 0.00 sys = 2.60 CPU) @ 115251.63/s (n=300000)
#3: 1 wallclock secs ( 0.51 usr + 0.00 sys = 0.51 CPU) @ 588235.29/s (n=300000)
#4: 0 wallclock secs ( 0.97 usr + 0.00 sys = 0.97 CPU) @ 308959.84/s (n=300000)
0536nobodyさん02/08/27 11:36ID:kyy6coMT
http://www2.freenet.jp/muneo/index.htm
超悪徳会社 J−COM(ジェイコム)の定期点検を大儀名文とした
勧誘営業に困っていませんか?
点検と言いつつ何もせず、結局はインターネット等の契約をして欲しい
の話へもっていく腐れ外道集団。
断ると「テレビの映りが悪くなっても知らんぞ」と脅迫メッセージをぶつけてくる。
苦情は総務省へ直接電話をすること。
マスコミはケーブルTVとは仲がいいので、テレビで取り上げることはまず無い。
2ちゃんねるパワーでジェイコムを追い詰めよう!!
0537優香02/08/27 18:39ID:UTh7HsUo
の記述の中で『090』を禁止語句にするにはどうしたらいいのでしょう??

elsif ($email !~ /[\w\.\-\&]+\@[\w\.\-\&]+\.[\w\.\-\&]/){&error("メールアドレスが間違っています。");}
0538nobodyたん02/08/27 20:01ID:???
とりあえず理解可能な日本語で書くように。
0539呼んだ?02/08/27 20:03ID:???
 _γ⌒⌒ヽ
 \\ノハ)ヽ)∩
  (○) ´∀`ノ丿  / ̄ ̄ ̄ ̄
  ⊂二 y /   < マルチですー。
    / _二⊃  \____
 ⊂二ノ
0540nobodyさん02/08/27 21:39ID:WUqkZoDp
>>537
まるちぃ〜ん
0541はにゃーん☆02/08/28 19:01ID:???
From: =?ISO-2022-JP?B?xxxxxxxxxxxxx=?= <xxxxx@xxxxxxx.xxx>
From: xxxxx@xxxxxxx.xxx
上記のどちらの時でもメールアドレスだけを抜き出す方法を教えてください。
また、メールのヘッダー内の「From:」や「To:」は
これ以外の形で送られるときはありますでしょうか?
例えば
From: <xxxxx@xxxxxxx.xxx> =?ISO-2022-JP?B?xxxxxxxxxxxxx=?=
の様になっていることなど...
どのような形でも確実に(無理で有ればほぼ確実に)抜き出す方法を教えてください。
よろしくお願いします。
色々と試していたのですが
/^From: .*?([\w\+\-\.]+@[\w\+\-]+\.[\w\+\.\-]+).*$/
これで思い通りに抜けるのですが問題有りますでしょうか?
0542はにゃーん☆02/08/28 19:15ID:???
大崎さんのperlメモを拝見させていただいたのですが、
下記のようでよいのでしょうか?
$mail_regex =
q{(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\} .
q{\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][} .
q{^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x} .
q{80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-} .
q{\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(} .
q{\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\0} .
q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} .
q{\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} .
q{;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} .
q{^\x80-\xff])*\]))*};
$hoge = 'From: =?ISO-2022-JP?B?xxxxxxxxxxxxx=?= <xxxxx@xxxxxxx.xxx>';
$hoge =~ s/^From: .*?($mail_regex).*$/$mail=$1/e;
0543nobodyさん02/08/28 21:22ID:???
>>541
多少削れる部分があると思いますが、特に問題は無い様に思います。

>>542
質問内容が解りませんが。
正規表現道場ですから、マッタりと待てば誰かが解析してくれるかも知れません。
0544nobodyさん02/08/29 00:30ID:???
>>541
( ´,_ゝ`) プッ      
0545nobodyさん02/08/29 12:19ID:???
>>544 は何しにこのスレに来てるのデスカ
0546困ったヤシ02/08/29 14:55ID:???
あのぅ
すいませんが…
正規表現で困っています
『file "〜』か『FILE "〜』っていう
キーワードで検索したいんですけど
おながいしますた
0547_02/08/29 14:57ID:???
>>546
/『file "〜』|『FILE "〜』/;
0548困ったヤシ02/08/29 15:01ID:???
早速のレスですいやせんが
訂正と補足します。
grepで
from や FROM の次に半角の空白と"以外の
列を探したいのです
/[^from "]|[^FROM "]/;
では無理っぽいですた
0549nobodyさん02/08/29 15:04ID:???
>>548
/form[^ "]/i
0550困ったヤシ02/08/29 15:12ID:???
549さん
早速のレスはありがたや
なのですが…

from が form になってます…

出来ませんでした。
補足します秀丸でのgrepです

0551困ったヤシ02/08/29 15:38ID:???
/from [^"]|FROM [^"]/;
でもだめれす…
お助けを
■ このスレッドは過去ログ倉庫に格納されています