正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
0893nobodyさん
04/11/27 11:11:00ID:???↑のような文字列から最後の"script.cgi"を抜いた文字列(/aaa/bbb/ccc/)に
マッチする正規表現ってどうなるでしょうか?
0894893
04/11/27 11:25:14ID:???/の数(パスの深さ)は任意で、最後のスラッシュまでを取り出したい訳です。
0895nobodyさん
04/11/27 11:35:32ID:???$string2 = $1;
print $string;
0896nobodyさん
04/11/27 11:35:51ID:???0898nobodyさん
04/11/27 17:33:21ID:???0901nobodyさん
04/11/27 17:47:14ID:???0902nobodyさん
04/11/27 17:47:30ID:???例えば、>>895に対して
m!(.*/)! の方がスマートでいいじゃない?
とか。。。 勝負を挑んでいく感じ?
0903nobodyさん
04/11/27 17:53:19ID:???全然できましぇん全部やってください〜なら初心者スレにでも逝けって感じ
>>1よみゃディレクトリ取得くらい素人でも出来る
>>902がスマーティかどうかは置いとくにしても
0904nobodyさん
04/11/27 17:55:29ID:???0906nobodyさん
04/12/01 22:05:03ID:MrbpLm4t"あ,い,う " ,え,お という文字列のダブルクォーテーションでくくられた部分の半角カンマ(,)を全角カンマ(,)に変換するのはどうしたらいいでしょうか?
変換前:"あ,い,う " ,え,お
変換後:"あ,い,う " ,え,お
0907nobodyさん
04/12/01 22:13:31ID:MrbpLm4t上記からダブルクォーテーションの削除も同時に行いたいです。
変換前:" あ,い,う " ,え,お
変換後:あ,い,う,え,お
0909nobodyさん
04/12/01 22:22:39ID:MrbpLm4t正規表現文字列置換を使います。
ですので、Perl5でお願いします。
0910nobodyさん
04/12/02 03:16:36ID:???こりゃどうだ。
$dat="\"あ,い,う \" ,え,お";
while($dat=~ /"(.+?)"/){
$ushiro = $';
($mae = $1) =~ s/,/,/g;
$dat = $mae . $ushiro;
}
print $dat, "\n";
0911nobodyさん
04/12/02 10:04:13ID:???0913nobodyさん
04/12/02 12:22:09ID:c/xEYFBxという正規表現はどう書いたらいいのでしょうか?
$a =~ /^[0-9a-zA-Z]{5,}/
とするとaaaaaはもちろんマッチするのですが、abcdeもマッチしてしまいます。
aaaaaもbbbbbもcccccもマッチする、しかしabcdeはマッチしない、とやりたいのです。
ご教授おねがいします
0914906
04/12/02 12:29:03ID:???ありがとうございます!
でも、今回のものではループは使用できませんでした。すいません。
strData = "あ,い,う" ,え,お
strWk = bobj.Replace("s/"".+,.+""/,/kg",strData)
という形でやってみたのですが、[「,」,え,お]となってしまいました。
ループを使わないと無理なんですね。すいませんでした。
0918nobodyさん
04/12/06 21:15:27ID:???顔文字みたいな正規表現無いかな?
0919nobodyさん
04/12/06 23:32:21ID:???おぱーい
0920nobodyさん
04/12/07 01:20:47ID:???0921nobodyさん
04/12/07 03:16:21ID:???/J+_+`/
/[^_]人[_^]/
/(?=_=)/
/(V)o\o(V)/ ←バルタン星人
(o|o) ←ウルトラマン
!|!○| ̄|_!|!
正規表現の考え方で育った人間ってどうなるんだろうと
ハァハァしながら作ってみた。
0922nobodyさん
04/12/07 22:38:18ID:???0923のりのみや
04/12/10 07:24:26ID:xBvxelrRテキストファイル内の行をランダムで10行ほどgrepするにはどうすれ良いのじゃ?
まろにはとんとわからんでのう…
どなたか教えてくれぬか?
この通りじゃ
0924nobodyさん
04/12/10 08:07:02ID:???うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
うがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだうがんだ
0926nobodyさん
04/12/14 05:12:31ID:???$value =~ s/[$WwWw]+//g;
はうーうまくいかないっす。
0927nobodyさん
04/12/16 18:01:44ID:Ovl4zL1K文字列にはマッチしないっていう正規表現はどうかけばよいですか?
0928nobodyさん
04/12/16 18:42:21ID:???Perl なら /^(?:(?!def).)*?abc(?:(?!def).)*\z/
もっと簡単にかけそうな気もするけど。
0931nobodyさん
04/12/17 11:52:31ID:???0932nobodyさん
04/12/19 12:51:50ID:???$aa="123456";として
$aaの行末から3、4つ目の数字(この場合34)を変数に格納したいのですが、
正規表現でできますか?
0934nobodyさん
04/12/19 15:59:53ID:???<?php
$aa = '123456';
preg_match('/(\d\d)\d\d$/', $aa, $match);
echo $match[1];
?>
0935nobodyさん
04/12/20 08:38:14ID:???0937nobodyさん
04/12/20 18:59:11ID:???0938nobodyさん
04/12/21 05:59:53ID:???0940nobodyさん
04/12/22 06:53:40ID:???0941nobodyさん
04/12/22 09:46:08ID:???日本海の冬の幸をたんまり仕入れろ。
築地で仕入れろ。力一杯仕入れろ。
強く、優しく、そして時にはエロく。
そうやってダンディーに仕入れた冬の幸を、
極上の練炭で焼く。やさしく焼く。じっくり焼く。
焼き上がり直前は、一気に火を煽って瞬間の仕上がりに全てを賭ける。
そして、食べる。焼き上がりを食べる。ハフハフしながら食べる。
味わう。素材の持ち味をすべて引き出して食べる。
感じる。素材の持つ力強さとうま味を精一杯感じる。
そして、思いを馳せろ。
自分が食べたものは、かけがえのない命だと。
たとえ単に美味な日本海の冬の幸だろうと、つがいだったものもいれば子供もいたかもしれない。
その命を自分は食してしまったのだと。
そして考えろ。それは命が命をつなぎ止める、地球上の壮大な生態系の一部であることを。
最後に、想え。感謝を。命への感謝を。生きていることへの感謝を。
0943nobodyさん
04/12/22 11:07:26ID:???main_1="test "
を
main_2="test"
にする。
つまりjavascriptで一行の文字の末尾のスペースを消すにはどうしたら良いですか?
main_2=main_1.replace(/$([ ]*)/,"");
では置き換えされません。
2.
全てマッチしたかどうかはどの様に調べたらよいですか?
数字のみの文字列かどうかを調べたい場合
text_1="0a"
text_2="0"
Reg_1=/[0-9]/
だとtext_2でもマッチしてしまいます。
よろしくお願いします。
0944nobodyさん
04/12/22 14:00:17ID:???1. 末尾のスペースなら str.replace(/([ ]*)$/, "") じゃない?
2. 先頭から末尾まで全て数字、ということで /^[0-9]+$/ かな?
0946nobodyさん
04/12/28 20:23:05ID:N6XrfelJ置き換えたいんですが、\[.*\]じゃダメなんですよね。
どうすればいいのでしょうか。ちなみに秀丸を使ってます。
0947nobodyさん
04/12/28 20:28:35ID:gvnNaLCU置き換えたい文字を直接指定すればいいだけだろ。
0948nobodyさん
05/01/08 18:38:47ID:1HeEdFHi$str =~ s/<a\s.*?>(.*?)<\/a>/$1/ig;
とやると、aタグの一部が消えずに残ってしまったりして困ってます。
あと、.*?は遅いと書いてあるのですが、良い案があれば教えてください
0949初心者
05/01/08 18:52:51ID:TEnfV1Izのですが、うまくいかないので、どなたか教えて頂けますでしょうか。
phpinfo();を書くと、「mbstring」の表に
Multibyte (japanese) regex support enabled が表示されるので、日本
語対応の正規表現関数は使えると思うのですが、うまくいかないのです。
<?php
print("結果は");
$kekka=ereg("a","abcd",$br);
print($br[0]);
$kekka=mbereg("b","abcd",$cr);
print($cr[0]);
print("です");
?>
と書くと、「結果はaです」としか表示されません。「結果はabです」と
表示させたいのですが、どうすれば良いのでしょうか。教えて頂けると
非常に助かります。宜しくお願い致します。
0950949
05/01/08 19:12:39ID:TEnfV1Izすれば出来るんですね。お騒がせしました。。。
0951nobodyさん
05/01/08 19:29:22ID:???実はHTMLタグの削除と正規表現は相性が悪かったり。
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq9.html#How_do_I_remove_HTML_from_a_stri
それでもやるとしたら、
$str =~ s/<a\s[^>]*?>(.*?)<\/a>/$1/ig;
ぐらいかな。
一部が残るのは分からない。
0952nobodyさん
05/01/08 19:49:31ID:/O5s2fuehttp://rinristarin.value-net.net/22/fir/ リリカちゃんが
エッチしたら更新する日記。最近ずっとこの子に萌えっす。
俺ともお願いぃぃ・・・
0954nobodyさん
05/01/08 21:06:07ID:???0955nobodyさん
05/01/09 10:04:16ID:???@data = split(/:/, $str);
だと、余分な区切りまで・・・
0956nobodyさん
05/01/09 10:17:30ID:???0957nobodyさん
05/01/09 10:32:46ID:???@data = $str =~ m/^([^:]*):(.*)/;
0959nobodyさん
05/01/11 22:33:00ID:nnjmq/8Zhttp://*.hoge.jp/
ってどうやって書くんでしょう?書籍とかと数時間格闘しましたが
ぱっさり理解できないのです
0961nobodyさん
05/01/11 22:42:43ID:???0962nobodyさん
05/01/12 00:48:18ID:mmvJMOP+文字列 = "例えば(その1)や(その2)など";
で( )の中身をとりたいんすけど素直に"/\((.+)\)/"とすると
"その1)や(その2"がマッチしてしまいます。
"/\(([^\(]+)\)/"とすると"その1"しかマッチしてくれません。
whileを使ってもうまくいきません。どのようにしたらいいでしょうか。
phpでpreg_matchしています。
0963nobodyさん
05/01/12 00:56:34ID:???そしてpreg_match_allの間違いじゃないのか
0964nobodyさん
05/01/12 00:58:27ID:???0965962
05/01/12 01:10:13ID:???それでいけました。
使ってるリファレンス本にpreg_match_allがのってなかったので気付きませんでした。
きちんとマニュアル読むようにします。
0966959
05/01/12 13:29:58ID:o9KFPT4S直リンクを防ぐために
httpd.confを次のように弄ったのですが、
上手く動作しませんでした。
サブドメインからのアクセスなら、
サブドメインが何でも、直リンクにはならないように設定したいのです。
自宅サーバー板で正規表現を勉強しろ、とのコメントをいただいて、
悪戦苦闘してるんですが、パッサリ理解できないのでございます。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://*\.hogehoge\.jp/.*$ [NC]
RewriteRule ^(.*)$ - [F]
これは動きませんでした。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://abc\.hogehoge\.jp/.*$ [NC]
RewriteRule ^(.*)$ - [F]
こっちは正しく動作しました。
0967nobodyさん
05/01/12 14:01:55ID:???*は直前の文字が0以上繰り返される、という意味なので、上の式がマッチするのは
http://.hoge . . .
http:////.hoge . . .
http:///////////////////////////////////////////////.hoge . . .
など。
どんな文字でもマッチさせるには、「.」の0もしくは1以上の繰り返し、と書けばいいんだが、
あらゆるパスにマッチする正規表現はかけてるのに、あらゆるサブドメインにマッチする
正規表現が書けないとはこれいかに。
0968nobodyさん
05/01/12 14:04:36ID:???正規表現で「 * 」は「直前の文字や正規表現を 0回以上繰り返す」という意味なので、
上の例の「 /* 」の箇所で「 / を 0回以上繰り返す」という意味になっちゃってる。
おそらくそこでやりたいのは「アルファベットを 1回以上繰り返す」だと思うので、
「 !^http://[a-z]+\.hogehoge\.jp/.*$ 」とすればいいんじゃないかな。
「 + 」は 1回以上繰り返す意味。
0969nobodyさん
05/01/12 15:11:10ID:1iafFrJp<span class="2ch_number">193</span> :
<span class="2ch_name">以下、名無しにかわりましてVIPがお送りします</span>:
<span class="2ch_date">05/01/12 13:43:10 ID:Zzzz4wKL</span></dt>
<dd>
<a href="http://jumpres/read.cgi/news4vip/1105500214/183"><a href="http://jumpres/183">>>183</a></a>
のレスをよく見ていえよ
<a href="http://jumpres/read.cgi/news4vip/1105500214/187"><a href="http://jumpres/187">>>187</a></a>! <br><br></dd>
↑のこういう一行(長いから改行してるけど)から>>999の左右にある<a></a>を外すっていうのをやりたいです。
どうしたらいいですか?
0971959
05/01/12 15:19:29ID:???ありがとうございます。
教えていただいたhttp://[a-z]+\.hogehoge\.jp/.*$
で上手く行きました。
本当に助かりました。感謝感激です
0972nobodyさん
05/01/12 17:23:47ID:???アンカータグ全部要らない、ってことなら、
何も考えずにとにかく <a ...> と </a> を取り除いちゃえばええのでは。
0973nobodyさん
05/01/13 20:32:10ID:rZkv4VMuのような文字列の
{__hoge__}とカッコ等が付いたものと、hoge と文字のみの2つを取得したく
以下のようにしてみました。
preg_match_all("/\{__(.+)__\}/","$str","$match");
一行に {__(.+)__} 形式の文字が一つしかない場合は、上手くいくのですが
二つ以上あるばあい、{__hoge__}{__piyo__} と最大のマッチをしてしまいます。
最小のマッチをさせるには、どうすればいいのでしょうか?
0976nobodyさん
05/01/15 14:08:23ID:DsGxQZIFあるとされるディレクトリ(例でいう./)を調べて、そのファイルがあるかどうかをチェック
したいのですが、引数のファイル名最後のスラッシュ以後を消す方法が分かりません。
どういった正規表現を用いれば良いのでしょうか?
0978nobodyさん
05/01/17 03:16:40ID:???ファイルテスト演算子とは知りませんでした(死
ところで、その引数から、拡張子とディレクトリ構造?(./、../、/)を消して
ファイルの名前だけを知りたいのですが、(./ディレクトリ名/**.txtでいう**)
そういう時は以下みたいに3段かませばいいですか?
$name = "./test/test.txt";
$name =~ s/\A\.|\A\.\.//g;
$name =~ s/\A\/|\A\/\S*\/|\S*\///g;
$name =~ s/\.\S*$//g;
うまく取得できない例外は起きそうでしょうか?
0979nobodyさん
05/01/17 03:36:56ID:???ファイル名を取り出したいなら
$name = "./test/test.txt";
$name =~ /.+\/(.+)/;
print $1;
test.txt
ファイル名のみに置き換えたいなら
$name =~ s/.+\/(.+)/$1/;
$name = "./test/test.txt";
print $name;
test.txt
0980nobodyさん
05/01/17 04:07:56ID:???0984980
05/01/17 11:53:51ID:???立てますた。
正規表現道場@2ch Part4
http://pc5.2ch.net/test/read.cgi/php/1105930285/
0985nobodyさん
05/01/17 15:42:34ID:???ネタごとに補足、でいいのかな
0986nobodyさん
05/01/18 06:55:18ID:???正規表現じゃない方が楽なら、
そっちを教えてあげるのが
優しいお兄さんとしての役割。
正しい誘導をしてあげていると思います。
0988nobodyさん
05/01/19 08:19:55ID:???え
さ
を
0989nobodyさん
05/01/20 02:09:00ID:???&1105930285;
0990nobodyさん
05/01/20 12:41:11ID:???0991nobodyさん
05/01/20 12:56:21ID:???0992nobodyさん
05/01/20 12:57:20ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。