トップページ⇒php
1001コメント313KB

正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/11/19 21:42ID:Kst3Nn4S
Perlに限らずスクリプト系言語で大活躍の正規表現。
このスレは有用そうな正規表現を紹介したり、どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

註:& や " を書くときには、&amp " と描いておきましょうね。

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/
0570nobodyさん04/08/05 23:09ID:???
まさか全角文字使って・・・
と、釣られてみる
0571nobodyさん04/08/06 00:32ID:???
すいません、マルチのつもりは無かったのですが。
もし不快感を催したのであれば、心からお詫び申し上げます。

しかし、私がこれを記していない事は確かです。
語調、時間差での間違いからそれは明らかです。
それを理解の上でのご返答・ご指摘宜しく御願致します。
0572nobodyさん04/08/06 12:07ID:4bPJPC+C
性器豹変
0573nobodyさん04/08/06 16:26ID:???
>>571
ネタ?
0574nobodyさん04/08/06 17:13ID:???
s/煽り|荒らし/あぼーん/g
0575nobodyさん04/08/06 22:55ID:???
"/煽り|荒らし/","あぼーん" 自慰が気になる。なに?
0576nobodyさん04/08/06 23:00ID:???
>>575
>>121
0577nobodyさん04/08/07 03:48ID:???
>>575は g スイッチのことぢゃないの?
確か global の略だったと思う。
パターンにマッチしたのは全部片付けちまいな、の意。

# >>576がなんで >>121 を指してるのかが気になる。
0578nobodyさん04/08/09 18:35ID:???
perlの正規表現で
$value = qq|<a href="hogehoge.html">test</a>|;
$value =~ s/<.*?>//g;
print $value;

でHTMLタグを削除できるけど、これの仕組みがわからない。
*→0回以上一致する
?→0回または1回一致する
.→???????

エロイ人解説おながいします
057957804/08/09 18:44ID:???
.→改行以外の一文字に一致する

見てた解説サイトにだけちょうどなかったorz

でも*?とする意味はまだわからないでつ;
0580nobodyさん04/08/09 18:45ID:???
>>578
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlre.html
058157804/08/09 19:05ID:???
>可能な限り小さな 繰り返しでマッチを行わせたいのなら、量指定子の後に“?”を続けます。

>>580
どうして?を付けるとそうなるのかが・・・・
例えば
$test = "<aiu>test</aiu>";
$test =~ s/<.*?>//g;
としたときに.*だけですべてをひとつの文字列として捉えそうなのに(現に?がないとそうなりますが)
?を付けるだけで・・・うまくいえないorz

?がコンパイルされる瞬間はいつなんですか?
<.*の時点で可能な限りマッチしますよね・・・っていうかその時は>これはあってもなくても<.*だけで
最後まで一致するから、じゃあ>はいつコンパイルされるんだ???

もしも
s/<<.*>>//g;
としたら先に<<>>を優先してあまった文字に対して.*をやるのかな?駄目だ・・これじゃ
漏れの疑問をエロイ人に理解してもらうことすらできないorz
0582nobodyさん04/08/09 20:25ID:???
>>581
*? で一塊の量指定子。量指定子としての * と量指定子としての ? を
並べて書いてるわけじゃない。

$test = "<aiu>test</aiu>"; として、

最長マッチ (<.*>) の場合:
1. $test の最初の < と パターンの < がマッチ
2. .* は「何か0文字以上を最大限」だから、aiu>test</aiu> にマッチ
3. パターンにはまだ > が残っているが、文字列は全部調べ尽くしたので
  一旦マッチ失敗。
4. .* は「0文字以上」でさえあればいいので、食べちゃった文字を一文字
 ずつ吐き出し、再試行できる (バックトラック) 。
5. .* にマッチした aiu>test</aiu> から最後の > を除外し、.* の次の
 パターンである > と比べる。
6. $test の最後の > とパターンの > がマッチ
7. パターンが全てマッチ ( < と aiu>test</aiu と > )

最短マッチ (<.*?>) の場合:
1. $test の最初の < と パターンの < がマッチ
2. .*? は「何か0文字以上を最小限」だから、( < と a の間にある) 空文字列
 にマッチ
3. a はパターン > にマッチしないので一旦マッチ失敗。
4. .*? は「0文字以上」でさえあればいいので、もっと詰め込む事もできる。
5. .*? に a を食わせる事にして、i と > を比べる。
6. 同様にパターン > が $test 中の > にぶつかるまで試行を繰り返す。
7. パターンが全てマッチ ( < と aiu と > )
0583nobodyさん04/08/09 21:34ID:???
ある文字列を含まない行を取得したいのですが、
どのようにしたらいいんでしょうか?
例)
aaabbb ERROR aaabbbccc ABC dddeee
aaabbbcc ABC cdddeee
ERROR aaabbbcccddd ABC eee
というようなテキストがあるとして
errorを含まずABCを含む行だけ(この例では2行目)を
マッチさせたいんですが。
0584nobodyさん04/08/09 21:44ID:???
>>583
http://www.din.or.jp/~ohzaki/regex.htm
^(?=.*ABC)(?:(?!ERROR).)*$
0585nobodyさん04/08/09 21:46ID:???
>>583
@match_lines = grep((!/error/i and /\bABC\b/), split /\n/, $Strings);
0586nobodyさん04/08/09 22:00ID:???
>>584, >>585さん、ありがとうございます。
しかし、教えてくださったやり方だと、自分の使っている
エディタ(Peggy)ではできないです。
これはPerlで使える方法なのでしょうか?
(Perl知りませんが。。。もしかしたらjavaの
OROとかでも使えるのだろうか?)
ちなみに秀丸エディタでは前方一致とか後方一致で
マッチさせることができるみたいですね。
そこまでいかない普通の?正規表現しか使えない環境でこれは
実現できないものでしょうか??



0587nobodyさん04/08/09 22:05ID:???
EmEditorならできるよ
0588nobodyさん04/08/09 22:22ID:???
>>587さん、ありがとうございます。
ちょっと見てみます。
でもすでにPeggyをシェアウェアとして長く使っており、
見やすい配色になれてしまったので、
今から乗り換えるつもりはないですが。。。
必要なときだけ使う形でいくしかないかな。
あ、でもこれ使用期限とかあるのかな。
0589nobodyさん04/08/09 22:30ID:???
フリーのVxEdtorの正規表現検索でも >>584 でできたよ。
059058104/08/10 07:09ID:???
>>582
うお!?
メチャクチャわかりやすい!
保存しておきまつ!
0591 04/08/10 13:43ID:2tv/OiLj
>>252
便乗させてください。

if ($FORM{'name'} !~ /^(\x82[\x9f-\xf1]|\x83[\x40-\x96]|[\x88-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])*$/){ &error; }
↑
ここから漢字とひらがなも省いて「全角カタカナのみを許可」という形にするにはどうればよいでしょうか。
0592nobodyさん04/08/10 20:24ID:???
>>591
http://www.din.or.jp/~ohzaki/perl.htm#Character
0593nobodyさん04/08/11 20:21ID:???
>>592
ありがとうございました
0594nobodyさん04/08/12 12:26ID:wFKNBEiY
電話番号をsjisで正規表現するにはどうすればいいでしょうか?
080-1234-5678
とか
03-1234-4321
とか
080-1234-5678
とか
08012345678
とか
0312344321
0595nobodyさん04/08/12 13:04ID:???
[0-9-]*
0596nobodyさん04/08/12 14:16ID:???
>>594
080-1234-5678?
08-01234-5678?
08012345678?
0597nobodyさん04/08/12 14:23ID:???
どういう文字列を電話番号とみなすのか、話はそれからだ
0598nobodyさん04/08/12 19:55ID:???
>>594
/(\d{2,4})-(\d{2,4})-(\d{2,4})/

こんなんか?全角数字は先に半角に変換処理しとけ。
0599nobodyさん04/08/12 20:02ID:???
>>598
それじゃ
01-23-45
にも
0123-4567-8910
にもマッチしちゃうよ
ハイフンがない場合にはマッチしないし
0600nobodyさん04/08/12 20:11ID:???
>>599
>>597
0601nobodyさん04/08/12 20:31ID:???
>>597
>>594 がどこまでのものを求めているのかは知らんが、参考までに。
http://www.soumu.go.jp/joho_tsusin/top/tel_number/q_and_a-2001aug.html
http://search.cpan.org/~taniguchi/Number-Phone-JP-0.03/
http://perldoc.jp/docs/modules/Number-Phone-JP-0.03/JP.pod
0602nobodyさん04/08/12 23:02ID:???
0△       -×××× -□□□□
0△△     -×××   -□□□□
0△△△    -××    -□□□□
0△△△△  -×      -□□□□
0△△△△△-□□□□

0から始まる9or10or11桁
ex>09012345678 (携帯は11桁?)
  家電は9桁(例外)と10桁?

全角も含めると(?:\x82[\x4F-\x58])を入れてやる?
ムズイな
0603nobodyさん04/08/12 23:08ID:???
>>602
それ何コードだ?
0604nobodyさん04/08/12 23:18ID:???
>>602
SJISだろうよ
0605nobodyさん04/08/12 23:19ID:???
× >>602
○ >>603
0606nobodyさん04/08/12 23:30ID:???
バカかこいつは?
全角を半角に直すという処理をなぜ思いつかない
0607nobodyさん04/08/13 01:10ID:???
題意がわからんのでなんともいえないけど、
マッチした文字列をそのまま取り出す、
ということなら全角を半角に直しちゃまずいと思われ。
0608nobodyさん04/08/13 08:12ID:???
>>594を見ると数字の全角半角の混ぜ書きはだめなような気がする。
ハイフンはいいのかな?
0609nobodyさん04/08/13 09:18ID:???
>>606
バカかこいつは?
どうせクエリを受けたらEUCに変換するんだから、全角→半角処理などいらぬ。
0610nobodyさん04/08/13 09:57ID:???
>どうせクエリを受けたらEUCに変換するんだから、全角→半角処理などいらぬ。
大丈夫かコイツ・・・
061159404/08/13 10:22ID:???
大漁!
0612nobodyさん04/08/13 11:18ID:???
>電話番号をsjisで正規表現するにはどうすればいいでしょうか?
0613nobodyさん04/08/13 12:28ID:???
eucに変換後、数字とハイフンを半角に変換(↓参照)してハイフンを削除。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H
半角数字だけになれば何とでもなんだろ。
0614nobodyさん04/08/13 23:16ID:???
結局誰一人として「電話番号をsjisで正規表現する」ことのできない無能揃いの糞スレ。
0615nobodyさん04/08/13 23:29ID:???
なんでsjisなんだろう
この人内部エンコーディング分かってるのかな?
0616nobodyさん04/08/14 00:05ID:???
それ以前に、必死に煽れば答えを出してくれるという発想が痛い
0617nobodyさん04/08/14 01:37ID:???
>>615
近頃sjisで書いてるプログラムが多いからだろ
0618nobodyさん04/08/14 02:10ID:???
元質問者がいなくなったら放置しとけよ
0619nobodyさん04/08/14 02:39ID:???
>>614
>>614
>>614
>>614
>>614
0620nobodyさん04/08/14 10:24ID:???
>>619
恥ずかしいからやめとけ。
s/煽り|荒らし/あぼーん/g
これが鉄則
0621nobodyさん04/08/14 11:16ID:???
ここは道場だから、質問者ががんばらないといけないんだよ。
0622nobodyさん04/08/14 11:25ID:4Tdhf0SR
面白そうなスレなんであげとく
0623nobodyさん04/08/14 11:29ID:???
>>594=>>614だったらえらくえらそうな質問者だな。答える気なくした
0624nobodyさん04/08/14 11:42ID:???
>>602
全角含めるならまず置換して
最初はゼロ、1から5桁の数字、ハイフン一かゼロ、1から4桁の数字、ハイフン一かゼロと四桁の数字が1かゼロ
でそのまま答えでてるんじゃないの?
0625nobodyさん04/08/16 01:23ID:???
>>624
もう終ってるからどうでもいいが、言葉でごちゃごちゃ言うより実際のコーディング例を書いたほうが
100倍わかりやすい。まあ今回は質問者がクソだから、コーディング例など書かないでほしいが。
0626nobodyさん04/08/16 06:38ID:???
コードを理解できてないから質問するとばっかり思ってた。
0627nobodyさん04/08/16 08:10ID:???
電話番号は>>595と>>597で終わってると思うんだけどな。
もっと詳しく知りたいなら>>597に答えないと。
0628nobodyさん04/08/16 10:56ID:???
abcdef @ hijklmp @ aiueos.
という文字列があって1つ目の@を(1)、2つ目の@を(2)という風に
置換したいのですが、どのように記述すれば良いのか教えてもらえますと助かります。
062962804/08/16 11:10ID:???
すみません。PHPスレのほうで特殊な関数を使うことによって
解決しました。お騒がせしてすみません。
0630nobodyさん04/08/16 15:12ID:???
>>628
まじかよ!?
正規表現でも実現しようぜ。

for (0..100){
unless ( $value =~ s/@/$_/ ) { last }
}

perlならこれで動くか?なんか怖いからテストしたくないなw



0631nobodyさん04/08/16 15:16ID:???
全角数字(EUC)を半角数字に変換。
<ルール>
1.言語特有のモジュールを使わずに実現しる。
2.処理前に配列の中に全角数字、半角数字を準備するのは禁止

おまいらこんなはちゃめちゃなルールでできるか?上司が意味不明なこと言ってきたんだよorz
0632nobodyさん04/08/16 15:34ID:???
>>630
perl ならこんな感じか。

$i = 0;
$s =~ s/@/"(" . ++$i . ")"/eg;
print $s;
0633nobodyさん04/08/16 15:55ID:???
>>631
my $str = '1234567890';# EUC
$str =~ s/(?:\xA3([\xB0-\xB9]))/ chr(ord($1)-0xB0+ord('0')) /eg;
print "$str\n";
他の種類の全角文字も入る可能性があるなら、
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
を参考にするといい。
0634nobodyさん04/08/16 16:06ID:???
>>631はごく普通を意味不明と言うめちゃめちゃな質問だな
063563104/08/16 16:25ID:???
>>633
ウホッ!?
063663304/08/16 19:56ID:???
ハッ!?
直前までPerlのスレ見てたんで思わずPerlで書いてもた・・・
0637nobodyさん04/08/16 21:39ID:???
配列の中じゃなけりゃいいんだから、s/0/0/gからs/9/9/gまで
10個書き並べればOKじゃないかという気もする
0638nobodyさん04/08/16 21:48ID:???
>>631
>>633
0xA3B0〜0xA3B9までが0〜9なんだよ。
第1バイトが0xA3なのを確認して第2バイトから0xB0を引けばよろし。
もしくは2バイトずつのまとまりから0xA3B0を引けばよろし。
0639nobodyさん04/08/16 21:53ID:???
つーかCで良く実装されてるんだからその通りに実装すりゃいいじゃん
0640nobodyさん04/08/20 09:23ID:???
ずいぶん寂れてるな。ここらで俺が問題を出してやろう。

XSS対策のHTMLエスケープを1行で済ませ。もちろん消すのじゃなくて、特殊文字に置換するんだぞ。
0641nobodyさん04/08/20 10:03ID:???
(´-`).。oO(素直に「XSS対策のHTMLエスケープを1行で描いてみました。
 (式)
無駄な部分や、非効率な部分がありましたら添削いただけるとありがたいです」って書けばいいのにね。。。)
0642nobodyさん04/08/20 15:10ID:???
>>641
だって書いてないし;
0643nobodyさん04/08/20 17:34ID:???
(´-`).。oO(素直に
        「XSS対策のHTMLエスケープを1行で書くやり方を教えてください」
       って言えばいいのにね・・・)
0644nobodyさん04/08/20 17:59ID:???
>>643
別に教えてほしいわけじゃないもん
0645nobodyさん04/08/20 19:58ID:???
ここまで自虐的な構ってくんが拝めるのもあと半月か
0646nobodyさん04/08/20 20:13ID:???
まっ、宿題は自分でしろと言うことですね。
0647nobodyさん04/08/21 19:21ID:zyqI2KUi
置換ツールのスレからきました。
置換ツールで正規表現を使いたいんですけど、

<h2>8/21</h2>
を
<h2 id="A21">8/21</h2>
という風に、「日付に当たる部分」を「idとして挿入する」という正規表現の書き方をお教え願えませんでしょうか?

#正規表現=perlだと思って、ここにきたんですが、間違っていたら誘導お願いします。
0648nobodyさん04/08/21 19:45ID:???
>>647
>>1
s|(?<=<h2)(>\d\d?/)(\d\d?)(?=</h2>)| id="A$2"$1$2|g;
0649nobodyさん04/08/21 20:05ID:???
>>648
御手数おかけしてすみません。
なんだか動作しませんでした。

ソースを確認したところ、
<h2>8/21</h2>
ではなくて、
<h2>8/21 タイトル</h2>
になっていたので、うまくいかなかったのかもしれません。

>>1から巡っていろいろ勉強してみます。
有難う御座いました。本当に感謝しています。
0650nobodyさん04/08/23 13:06ID:???
>>649
こいつアフォってことで間違いない?
0651nobodyさん04/08/23 14:30ID:???
>>650
アフォでもなんでもいいですよ。
正規表現必要な分だけ勉強して覚えたのでできましたし。
なんで不要に煽るんですかね。
0652nobodyさん04/08/23 18:06ID:???
>>651
なんで質問すらまともにできないんですかね。
0653nobodyさん04/08/23 18:09ID:???
>>652
済んだことをねちねちと。
0654nobodyさん04/08/23 19:14ID:???
>>653
タイトル読めませんか?
0655nobodyさん04/08/23 19:59ID:???
タイトルの正規表現が理解できなかったとみえるな
0656ピエール04/08/23 22:11ID:aJIVYOH0
http://ada-ch.jpn.org/ez/ 煽りならこのサイトが一番
0657nobodyさん04/08/24 03:13ID:???
>>651
>アフォでもなんでもいいですよ。
なんでもよくない。間違いなくお前はアフォだ。リアルに言うと知恵遅れ。
自分がアフォだとも気づかずに必死に勉強とかやってるのってなんか空しいな。
まずは自分がアフォだと認識して、具体的にどの能力が劣るのかを知りなさい。

これからは質問前に自分の疑問と、どうしたいかっていうことをきちんとまとめてから
ここにきて書きはじめなさい。急がば回れってね。質問前に遠回りしてもしっかりまとめれば
誰かがちゃんと答えてくれるよ。
0658nobodyさん04/08/24 17:59ID:???
>>657
いや、解決したから。
0659nobodyさん04/08/24 18:23ID:5aeoylmi
au使いでPCのアドレス(メーラーはBecky!2)にメールを自動転送しています。
その際に受信ボックスから、携帯メール(docomo ezweb vodafone)をフィルタリングマネージャで
別のフォルダ(フォルダ1と仮定)に振り分けたいのですが、
その中でも彼女のメールだけさらに別フォルダ(フォルダ2)にしたいと思ってます。

つまり、
" ***@docomo.ne.jp " " ***@ezweb.ne.jp " " ***@*.vodafone.ne.jp "から来たメールは
フォルダ1に振り分けたいが、もしそれが彼女のアドレスの場合はフォルダ2に振り分ける、
といった感じです。

どのように記述したらいいのでしょうか?

以下、Beckyヘルプより引用


下記の正規表現がサポートされています。

^行頭にマッチします。
$行末にマッチします。
X|YXまたはYにマッチします。(X,Yは正規表現です)
[A-Z]AからZまでの間の文字にマッチします。(A, Zは任意の文字)
[^A-Z]AからZまでに含まれない文字にマッチします。
[ABC]A,B,Cのいずれかの文字にマッチします。 (A,B,Cは任意の文字)
[^ABC]A,B,Cのいずれでもない文字にマッチします。
.任意の一文字にマッチします。
X*Xの0以上の繰り返しにマッチします。 (Xは正規表現)

X+Xの1以上の繰り返しにマッチします。 (Xは正規表現)
X?Xまたは空文字列にマッチします。


()で囲んだ正規表現は解釈の優先順位が高くなります。
0660nobodyさん04/08/24 19:08ID:???
まずは彼女のメルアドを晒せ
漏れがメル友に(ry
0661nobodyさん04/08/24 19:25ID:???
>>659
Becky!のフィルタの仕様がわかんないけど、

^From:.*kanojo.kawaiiyo.kanojo → まず大事なメルを保護
^From:.*(どこも|あう|ぼだほん)\.ne\.jp → 残りのうち携帯メルを振り分け
(中略)
どれにも当てはまらないもの → ベタな inbox に落ちる

こんな仕組みじゃないのかな。

むしろ、こちらでどうぞ。
メールソフト Becky! Part9
http://pc5.2ch.net/test/read.cgi/software/1090377005/
066265904/08/24 20:38ID:???
>>660
(・ε・)

>>661
よく分からないので該当スレに逝ってきます。
ありがとうございました!
0663nobodyさん04/09/03 00:28ID:V2uWGL3l
カンマもありうる文字列<table><tr><td>1,2,3,4</td></tr><tr><td>a,b,c,d</td></tr></table>カンマもありうる文字列

これでテーブルタグの中にあるカンマだけ</td><td>に置き換えたいのです。

どんなもんでしょう。
0664nobodyさん04/09/03 02:17ID:???
>>663
Perl なら

s{(?<=<table>)(.+?)(?=</table>)}
 { (my $str = $1) =~ s|,|</td><td>|g; $str }eg;
066566304/09/03 07:50ID:???
>>664
Perlです。ありがと。正規表現一発ではムリということか。
使ったことのない構文がたくさん入ってるんで、ちょっと解析してみます。
066666304/09/03 08:46ID:???
>>664
とりあえず解析後回しで突っ込んでみたら完璧でした。
もしかして<table>〜</table>が複数ブロックあるとダメかなと思ったけどOK。
なんか自分ではまったく考えられない構文だったのでちょっと絶望感。

とりあえず誰かの役に立てばと、作ってたルーチン晒します。
アウトライン指定を行頭ピリオドの数で、行頭カンマをテーブルと判断して
自動整形。
アウトラインはH1は掲示板タイトルに使うし、H2は記事タイトルに使うから、
H3からね。

$comment = &sanitize($comment,3);
$comment = "\x0A$comment\x0A";
$comment =~ s/\x0A+/<\/p><p>/g;
$comment =~ s/<p>\.\.\.\.([^<]*)<\/p>/<h6>$1<\/h6>/gi;
$comment =~ s/<p>\.\.\.([^<]*)<\/p>/<h5>$1<\/h5>/gi;
$comment =~ s/<p>\.\.([^<]*)<\/p>/<h4>$1<\/h4>/gi;
$comment =~ s/<p>\.([^<]*)<\/p>/<h3>$1<\/h3>/gi;
$comment =~ s/<p>,([^<]*)<\/p>/<tr><td>$1<\/td><\/tr>/gi;
$comment =~ s/<tr>[^,],<\/tr>/<\/td><td>/gi;
$comment =~ s/<\/p><tr>(.*?)<\/tr><p>/<\/p><table><tr>$1<\/tr><\/table><p>/gi;
$comment =~ s{(?<=<table>)(.+?)(?=</table>)}{ (my $str = $1) =~ s|,|</td><td>|g; $str }eg;
$comment =~ s/(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/<a href="$1" target="_top">$1<\/a>/gi;
$comment = "<p>$comment</p>";
$comment =~ s/<p><\/p>//gi;
0667nobodyさん04/09/03 16:41ID:XAO5vI6O
リンク集のぺーじより、
ファイルネームがfoo.cgiに関するリンクをすべて洗い出したいとき、
どのように書けばよいのでしょうか?
/<A 〜〜foo.cgi.*?>/ig
という感じになると思うのですが〜〜の部分がよくわかりません。
ちなみに、href=をつけていないのは、改行がはいっていたり、classなどよけいなタグが入っていることがあるためです。

066866704/09/03 16:56ID:???
ありゃ、自己解決した。
/<A .*HREF=.*foo.cgi.*?>/ig
でよろしいようですね。
検索結果がタグになっていたんで、Web表示だとうまく見えていませんでした。


0669nobodyさん04/09/03 17:52ID:???
>>667-668
よろしいかどうかは君が相手にしているデータ次第なわけで。

$_ = <<'EOF';
<a class="TRAP" name="href">foo.cgi</a>
<a
href="foo.cgi" class="OK">OK</a>
<a class="OK" href="foo.cgi">OK</a><a href="foo.cgi" class="OK">OK</a>
<a class="OK" href="foo.cgi"
>OK</a>
<a href="fooocgi">TRAP</a>
<a href="bar.cgi?href=foo.cgi">TRAP</a>
<a hreflang="ja" name="fooocgi">TRAP</a>
EOF

print '[', join("]\n[", /<A .*HREF=.*foo.cgi.*?>/ig), "]\n";
print "---\n";
print '[', join("]\n[", /<a\b[^>]*?\shref=[^>?]*?foo\.cgi[^>]*>/ig), "]\n";

まぁ解決したようなのでこれ以上は突っ込まんでおく。
0670nobodyさん04/09/05 17:08ID:VHVjccb7
phpで第二空白から第三空白までの文字列取得したいんですが、
どのような方法ありますか?
aaaaaa aaaaa aaaaaaaaaaaaa aaaa aaaaa
         |← ここです →|
■ このスレッドは過去ログ倉庫に格納されています