正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/11/19 21:42ID:Kst3Nn4Sこのスレは有用そうな正規表現を紹介したり、どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。
註:& や " を書くときには、& " と描いておきましょうね。
Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門 目次
http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座) - Index
http://www.sixnine.net/regexp/
ほとんどは↓のリンク集にまとまっています。
正規表現最新リンク集2002
http://www2.famille.ne.jp/~akio1998/l_grep.html
過去スレ
正規表現道場@2ch
http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
http://pc2.2ch.net/test/read.cgi/php/1038146241/
0167nobodyさん
04/01/20 08:28ID:???0168nobodyさん
04/01/20 17:57ID:???長期滞在は精神衛生上よろしくありませんので、あくまでピーピングってください。
0169158
04/01/21 03:02ID:???申し訳ないです。数時間色々試して、「正規表現でそういうのは無理」
と思いつつもつい、知ってる人がいれば良いな程度に書き込んでしまいました。
(「無理」って思ったんなら諦めろよ、俺。)
処理の方いじってみる事にします。(とりあえず、当面質問スレには出向かない方向で。)
ありがとうございました。
0170nobodyさん
04/01/21 06:51ID:???気持ち悪いです。
0171nobodyさん
04/01/21 07:45ID:???0172nobodyさん
04/01/21 15:39ID:???preg_match('/(?:(?!^(foo|bar)).)*/', $str, $arr); if ($arr[0]) do;
これが正規表現でやることか?
つーか>>1のサイトくらい見ろよハゲ
0173nobodyさん
04/01/25 15:45ID:???<a href="#epigraph">▲</a> <a href="#D_20040124">▼</a>
を、
<a href="#D_20040124">▲</a> <a href="#epigraph">▼</a>
と、属性値だけ入れ替えるにはどうしたらよいのでしょうか?(属性値は可変です)
正規表現は苦手で、いくら考えても判らなかったので……。
0174nobodyさん
04/01/25 16:16ID:???こういうことなんかな? 意図がわからんからめちゃくちゃ適当なんだが。
0175nobodyさん
04/01/25 16:27ID:???できました! そっか、こういう風にすれば良かったのか……。
今度からは自分でできるように、正規表現についてしっかり勉強しようと思います。
ありがとうございました。
0176nobodyさん
04/02/03 02:35ID:dCMf0k2c0177nobodyさん
04/02/09 22:07ID:9171cO3Sa.b.c.d/8
とか
a.b.c.d/32
ってどういう意味なんでしょうか?
誰か教えてください…
0179nobodyさん
04/02/10 18:53ID:???PerlでHTMLタグを取り除く処理を行う場合、
s/<.*?>//g;
と書いている場合と、
s/<[^>]*>//g;
と書いている場合がありますよね?
大抵のところで「<.*?>は遅い」とかかれているのですが、
実際どれくらい処理効率が違うのでしょうか
0180nobodyさん
04/02/10 18:56ID:???いくつか並んだ単語の中の、真ん中の単語だけを検索するには
どういう正規表現を使ったら良いのでしょうか?
<item name="アニメA.Aスレッド 13th session " category="AA" board="AAサロン"
<item name="アニメA.Aスレッド 12th session " category="AA" board="AAサロン"
<item name="アニメA.Aスレッド 11th session " category="AA" board="AAサロン"
と並んでいるもののうち、【アニメA.Aスレッド xxth session】だけを検索したいのですが可能でしょうか?
いろいろ検索しつつ試行錯誤をしていますが、どうしても分かりません。
どなたかいらっしゃいましたら、教えて頂けないでしょうか?
0182nobodyさん
04/02/11 05:51ID:???0183nobodyさん
04/02/11 21:58ID:???3・4文字目が同じ、5・6文字目が同じような単語をマッチさせる正規表現を教えていただけませんか?
○×△△□□ みたいな形式。1・2文字目はなんでもOK。7文字目以降に何がきてもOK。
sedでおねがいします。
0184nobodyさん
04/02/11 22:18ID:???0185nobodyさん
04/02/11 22:24ID:???0186nobodyさん
04/02/11 22:33ID:???0188nobodyさん
04/02/12 01:23ID:???0189nobodyさん
04/02/12 01:38ID:???こうか?
0190nobodyさん
04/02/12 02:26ID:???tattoo
balloon
saccees
あたりがひっかかればいいのか?
0191189
04/02/12 02:40ID:???/^..\(.\)\1\(.\)\2/
でいいんじゃない?
0192nobodyさん
04/02/12 02:44ID:???Perlで\1とかが使えるのは知ってたのですが、sedでもつかえるとは思って無かったです。
ぶしつけがましいかもしれませんが、Perlで!~と表される「マッチ以外」を
sedで実装するにはどうすればいいのでしょうか。
実は今回初めてsedというものに触れることになったもので・・・
Perlみたく正規表現が使える、というのは知ってたのですが仕様が違うらしくうまくいかなくて・・・
0195nobodyさん
04/02/12 23:51ID:???http://(.)+\.2ch\.net/test/read\.cgi/(.)+/[0-9]{10}/
これでいいですか?
もうちょっとスマートなのあればお願いします。
0196nobodyさん
04/02/13 04:16ID:???0198nobodyさん
04/02/13 17:38ID:???ごめんなさい。素人なものでよくわからないのです・・・
任意の文字は、「(..)+」じゃないんでしょうか・・・
「.+」でいいですか?
http://(.+\.2ch\.net|.+\.bbspink\.com|.+\.machi\.to)/test/read\.cgi/.+/[0-9]{10}/
でいいでしょうか?
それと、Perlでは、10個の数字なら「\10d」でできたと思うのですが、PHPではできないみたいですね・・・
0199195
04/02/13 22:04ID:???http://([a-zA-Z0-9]+\.2ch\.net|[a-zA-Z0-9]+\.bbspink\.com|[a-zA-Z0-9]+\.machi\.to)/test/read\.cgi/[a-zA-Z0-9]+/[0-9]{10}/
これでOKですね。
0200nobodyさん
04/02/14 02:42ID:???0201nobodyさん
04/02/14 12:38ID:???次の文字列で、<!--from-->〜<!--to-->部分を除去する
正規表現が分からないです。
"あい<!--from-->か<>き<!--to-->うえ<!--from-->くけ<>こ<!--to-->お"
→「あいうえお」を取り出したい
自作の失敗正規表現
/<\!--from-->.*<\!--to-->//g
→「あいお」になってしまう。
0208nobodyさん
04/02/14 23:14ID:???今は
$title =~ s/.*?( alt=\".*?\")*/$1/gs;
$title =~ s/alt="//g;
$title =~ s/"//g;
とやっていますが、効率が悪いと言われました。
0211nobodyさん
04/02/14 23:43ID:???alt属性値は複数ある可能性もあるんです(<img>タグの個数が分からないため)
0212nobodyさん
04/02/14 23:49ID:???で、求めたいことをやるコードなら、今、プログラム板の
Perl質問箱でも答えたとこだが、
@title = ($_ =~ /.*? alt=\"(.*?)\"*/$1/g);
でよろしかろう。
0213nobodyさん
04/02/15 00:04ID:???ヒントを得られたので改変して自己解決しました。
$title =~ s/.*?alt=\"([^"]*)[^(alt)]*/$1/gs;
これでできました。
どうもありがとうございました。
0216nobodyさん
04/02/15 00:24ID:???何か問題があるんでしょうか・・・汗
0217nobodyさん
04/02/15 00:28ID:???alt="〜"以降にaかlかtが含まれるとそれ以降がおかしな事に・・・
0218nobodyさん
04/02/15 02:32ID:???0219nobodyさん
04/02/15 02:58ID:P41SZm3C90020E68E8D0320A9028D14FF40AE7307BD5A8...
これに16文字ごとに00を挿入するにはどう書けばいいでしょうか?
こんな感じに出力したいのですが
0090020E68E8D0320A009028D14FF40AE730007BD5A8...
自分でチュートリアルみながらやってみたら
アホみたいに00で溢れてしまいました・・・
0221219
04/02/15 04:05ID:???$output =~ s/\(................\)/00\1/gs;
0222nobodyさん
04/02/15 04:20ID:???$output =~ s/([0-9A-Z]{16})/\1xx/gs;
print $output;
00ができねー。
0223nobodyさん
04/02/15 04:23ID:???$output =~ s/([0-9A-Z]{16})/00\1/gs;
print $output;
頭00つきで・・・。
0225nobodyさん
04/02/15 04:29ID:???$output =~ s/([0-9A-F]{16})/$1_/g;
$output =~ s/_/00/g;
0227219
04/02/15 05:27ID:???無事できますた
0228>>208
04/02/15 09:16ID:???$title =~ s/.*?alt=\"([^"]*)[^a]*?/$1$2/gs;
$title =~ s/([^"]*).*/$1/gs;
「alt」っていう文字列が出てくるまで、ってどういう風に表現するんでしょうか・・・・
紹介された他のスクリプトは全て期待通りの動きをしませんでした
$title=<<END;
<h1><img src="./hoge.png" width="10" height="10" alt="alt属性値"></h1>
<div id="id">
テストaltテスト<br>
</div>
<h2><img src="./hoge2.png" width="10" height="10" alt="alt属性値2"><img src="./hoge3.png" width="10" height="10" alt="alt属性値3"></2>
<div id="id">
テストaltテスト<br>
</div>
END
これに正規表現をかけて、$titleの中身を
alt属性値alt属性値2alt属性値3
に出来ればかなり近いものになると思うんですが・・・・
0229未承諾広告※ ◆aiY4htt2.2
04/02/15 10:17ID:???0230nobodyさん
04/02/15 10:55ID:???0231nobodyさん
04/02/15 16:22ID:???0232nobodyさん
04/02/16 14:35ID:???print 'ごめんなさい' if m(_ _)m;
0233
04/02/21 11:23ID:ZPsBKiYf私は↓のサイトで、サッカーの試合後に出される選手の採点をVBScriptを使って集計しております。
http://www.geocities.co.jp/SiliconValley-SanJose/8260/shukeihouhou040220/shukeihouhou.html
例えば、 「中田:6.5」というカキコを読み込むのに
re.Pattern = "([a-zA-Zぁ-んァ-ヶー−一-鶴]+)[ ;:;:…]*(10\.0|10|9\.5|9\.0|9|8\.5|8\.0|8|7\.5|7\.0|7|6\.5|6\.0|6|5\.5|5\.0|5|4\.5|4\.0|4|3\.5|3\.0|3|2\.5|2\.0|2|1\.5|1\.0|1|0\.5|0\.0|0)"
とパターンを設定しているのですが、
2つの問題に直面しております。
一つの問題は選手名の読み込みです。
漢字コードの設定がうまくないために取り込めない選手がいます。
今のところ、「黒部」が「部」になってしまうということが起きています。
もう一つの問題は点数の読み込みです。
採点では0.0〜10.0まで0.5刻みで点数を評価します。
それ以外の数字は無視しようと思うのですが、
3.14だと3と認識してような現象がおきているようです。
以前はjperlで認識させてまして漢字コードに関しては
[a-zA-Zぁ-んァ-ヶー−亜-腕弌-熙]+
でやってて問題は起きなかったですが、VBSでは無理なようです。
適当に文字コード表を開いたら漢字が一で始まって鶴で終わってたので
これを適用したら、そこそこうまくいったのですが、「黒」はだめなようで・・・
0234nobodyさん
04/02/21 13:17ID:???鶴のうしろに、
鷲 鷹 鷺 鹸 鹿 麓 麗 麟 麦 麹 麺 麻 麿 黄 黍 黒 黙 黛 鼎 鼓 鼠 鼻 齢 龍
これだけの文字が残ってるよ。
しかし、JScriptはUNICODEで範囲指定しなきゃならんのか……
あと、置換で面倒なことしてるとおもったら、trがないのか……
ドキュメントのRegExp.Execute()のところにSubMatchesコレクションの記述がまったくない……
0235nobodyさん
04/02/21 14:01ID:X1kd7Gnd$short = 'hoge++';
という場合に
$long = 'hogehoge++';
にマッチするかどうか判定するにはどうしたらいいですか。
if ($long =~ /$short/) {}
だと ++ の部分でエラーが出ちゃうです。
0236
04/02/21 14:14ID:ZPsBKiYfありがとうございます。「黒部」が読み込めました。
選手名はこれでいけたっぽいです。
>置換で面倒なことしてるとおもったら、trがないのか
どうなんでしょうね。おいらが探しきれなかっただけかも・・・
>RegExp.Execute()のところにSubMatchesコレクションの記述がまったくない
すいません、意味わかんないっす
0237nobodyさん
04/02/21 14:17ID:???VBSは良く分からないけど、
(10|[0-9](\.[05])?)([^\.0-9]|$)
得点はこんな感じでどうでしょ。
>>235
Perlなら
if ($long =~ /\Q$short/) {}
0239
04/02/21 15:28ID:ZPsBKiYfありがとうございます。
しかしそれだと10.0が読み込めないようです。
(10\.0|10|[0-9](\.[05])?)([^\.0-9]|$)
こうすればいいのかな?
0241
04/02/21 16:31ID:ZPsBKiYf�dクス!!ありがとうございます。
これで解決です。
0242nobodyさん
04/02/21 16:44ID:TmSpuw1E許可したい場合どうしますか?
if($FORM{'name'} =~ /\w/g) { &error; }
や
if($FORM{'name'} !~ /\W/g) { &error; }
if($FORM{'name'} =~ /[a-zA-Z0-9]/g) { &error; }
では、カタカナを受け付けなくなってしまい、
if($FORM{'name'} !~ /\W/g) { &error; }
if($FORM{'name'} =~ /[A-Z0-9]/g) { &error; }
だと、アルファベット小文字が使えてしまいます。
0247nobodyさん
04/02/21 21:32ID:???0248nobodyさん
04/02/21 21:49ID:???PerlはEUCじゃないとマルチバイトの処理できない
0249247
04/02/21 21:54ID:???文字である以上、文字コードだろ?
文字コードは変動しないよな?
できるじゃん!
0251247
04/02/21 22:20ID:???SJIS:ぁ \x82\x9f
SJIS:ん \x82\xf1
/^(?:\x82[\x9f-\xf1])+$/
なんでできないのか理由家! レベル低いかも知れんけどできるだろ?
0252nobodyさん
04/02/21 22:23ID:???if ($FORM{'name'} !~ /^(\x82[\x9f-\xf1]|\x83[\x40-\x96]|[\x88-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])*$/){ &error; }
こんなんでいい?
全角アルファベット数字と記号類も省くけど。
>>250
正しく正規表現書けば、Shift_JISでも処理できるよ。
Perl 5.8.xならencoding.pmがお勧めだけどね。
中の人はUnicodeで処理してるらしいけど。
かぶった?
0253nobodyさん
04/02/21 22:23ID:???・・・
なんかもう、ね。
s/あ/ん/;
と普通にマルチバイト入れてやる場合のこと言ってるんだろ・・・
だれも文字コードでやれなんて言ってない
0255247
04/02/21 22:33ID:???>PerlはEUCじゃないとマルチバイトの処理できない
↑特にこことか。
jperl とか言い出す始末。。。
0256nobodyさん
04/02/21 23:00ID:???いや、いいんだけど、>>248と勝手に争ってくれ。
ここ、過疎スレだから、周り気にしないで争ってね、思う存分
0257nobodyさん
04/02/21 23:20ID:???ありがとうございます。
Shift-Jisで、試してみたところ、
正常動作しているようです。
全角アルファベット数字と記号類も
省きたいと思ってたので助かりました。
0258234
04/02/21 23:44ID:???すまん、意味不明なこと書いちゃった。
MSのWindows ScriptドキュメントでRegExpオブジェクトのヘルプリファレンス読んだんだけど、
RegExp.Execute()のところに、実行するとSubMatchesコレクションが生成されるって記述が
ぜんぜんないんよ。
てなわけで、SubMatchesコレクションの存在を知らなかった……_| ̄|○
(ふだんはBASP21コンポーネントのMatch()やReplace()を使ってるし)
SubMatchesってキーワードでヘルプを調べれば載ってるんだけどね。
0259236
04/02/22 10:53ID:???そういうことっすか。
ちなみにつくるとき、ここを参考にしましたよ。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnclinic/html/scripting121399.asp
0260nobodyさん
04/02/22 23:25ID:kjGz/T2Cこういう文章から[あたい][とくちょう]の部分を
一括で削除する正規表現を教えてくれないでしょうか。
Wzの検索、置き換えを使っています。
0261nobodyさん
04/02/22 23:39ID:???とかしか思いつかない漏れはここに似つかわしくないですか
0263nobodyさん
04/02/23 10:39ID:???$_[0] = abc\,edf
$_[1] = ghi
という具合に split したいのですが、どうすればよろしいでしょうか?
0264nobodyさん
04/02/23 11:51ID:???split /(?<!\\),/, $str;
以後、Perl の質問は http://pc2.2ch.net/test/read.cgi/php/1075545279/ へ。
■ このスレッドは過去ログ倉庫に格納されています