[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 07/03 06:01 / Filesize : 179 KB / Number-of Response : 640
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現道場



1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。

259 名前:nobodyさん mailto:sage [2008/01/21(月) 16:00:34 ID:???]
PHPの正規表現についての質問です。
2chのdatを各要素毎にキャプチャしたいのですが、

preg_math_all('/((.*)<>)*/', $dat, $match);

と書いて実行すると全体が丸々$matchへ格納されます。
$datへは「 要素1<>要素2<>要素3<>要素4<>要素5 」という形式のデータが入っており要素5は1行目にのみ存在します。
また、各要素は空欄の場合もあります。

初歩的な質問で申し訳ありませんが、よろしくお願いします。

260 名前:nobodyさん mailto:sage [2008/01/21(月) 16:01:39 ID:???]
>>258
こちとらお前さんにそれを聞きてえぐらいだよ。

261 名前:nobodyさん mailto:sage [2008/01/21(月) 16:03:38 ID:???]
>>259
preg_split で "<>" で配列にばらした方が扱いやすいかも。

262 名前:259 mailto:sage [2008/01/21(月) 16:15:53 ID:???]
>>261
レスありがとうございます。
確かにphpには要素を分解する為の便利な関数が始めから用意されておりますが、今回はあえてpreg_matchを用いて自身で分解してみたく思います。
自分にはハードルが高い気もするので、手始めに要素5だけを取り出そうと挑戦してみたのですが、

/<>(.+)$/ と書くと要素3<>要素4<>要素5がキャプチャされてしまいます。
やはり当方の正規表現に対する解釈が根本的に間違っているのでしょうか。

連投になり大変申し訳ないのですが、こちらの質問へのみご回答お願いいたします。
>>259は回答を得ましても自分には理解の範疇を超えていると判断しましたので)

263 名前:nobodyさん mailto:sage [2008/01/21(月) 19:42:35 ID:???]
[^<>]

264 名前:259 mailto:sage [2008/01/21(月) 20:27:24 ID:???]
自己解決しました

265 名前:nobodyさん mailto:sage [2008/01/21(月) 22:14:14 ID:???]
>>264
どう解決したかくらいは書いてもバチは当たらなくってよ。

266 名前:nobodyさん mailto:sage [2008/01/30(水) 11:50:28 ID:???]
perlのgrepで大文字小文字の区別をつけて検索したいです。
@hitlist = grep(/$search_word/i, @search_list);
これを、
@hitlist = grep(/$search_word/$serch_option, @search_list);
($serch_optionにはiやgを事前に設定)
こんな感じにしたいのですが、なんかいい案はありますか?
if文で分岐させるしかないですか?

267 名前:nobodyさん mailto:sage [2008/01/30(水) 13:19:43 ID:???]
大小文字区別つけて検索したいならオプションなしで固定でいいでしょ
そこでgオプション使うケースなんてないでしょ



268 名前:nobodyさん mailto:sage [2008/01/30(水) 16:28:40 ID:???]
>>266
質問が要領を得てないんだろうけど、
大文字小文字区別つけるかつけないかを切り替えたい、って話ではないかと。

どうすれば良いのかは知らないけど。

269 名前:266 mailto:sage [2008/01/30(水) 17:01:36 ID:???]
質問の要領が悪くて申し訳ありません。
正規表現のオプションをうまいこと制御できないかなと思いまして。
特に大文字小文字にこだわってるわけではないです。

270 名前:nobodyさん mailto:sage [2008/01/31(木) 03:02:38 ID:???]
>>269

大小文字の違いを無視して検索したいときに、パターンの先頭に (?i) 埋めときゃいい。

$pat = ($icase ? "(?i)" : "") . $search_word;
@hitlist = grep /$pat/, @search_list; 

とか

 


271 名前:nobodyさん mailto:sage [2008/01/31(木) 15:56:15 ID:???]
proxomitron の正規表現(?)が独自過ぎて、イライラしてくるんだが…

272 名前:nobodyさん [2008/02/25(月) 06:25:28 ID:PeKKba69]
2008-03 発売(予定)
「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳)
ISBN 978-4-87311-359-3 定価 5,040円


273 名前:nobodyさん mailto:sage [2008/02/25(月) 12:38:04 ID:???]
高いね。今は Web で検索すればいいからねぇ…今更そんなの出して売れるのか。

274 名前:nobodyさん [2008/03/03(月) 22:23:33 ID:3LUWkmBW]
質問です!
PHP 5.2.5で、<br>以外のタグ削除を下記のようにしたところ

do {
$res = str_replace( $result_tag[1], '', $res );
} while ( mb_ereg( '(<[a/][^>]+>)', $res, $result_tag ) );

所々で効いてません。
前のサーバー(PHP 4.4.4)では正常に動いていました。
よろしく御指南ください。

275 名前:nobodyさん mailto:sage [2008/03/03(月) 23:15:55 ID:???]
>>274
初心者なので間違ってたらごめんなさい。

strip_tagsで、タグ除去と除外タグ指定が可能なはずです。

276 名前:nobodyさん mailto:sage [2008/03/04(火) 02:59:10 ID:???]
>>275
ありがとう!
思い通りになりました。
感謝です。

277 名前:nobodyさん mailto:sage [2008/03/05(水) 17:20:52 ID:???]
<a href="jumpres/read.cgi/newsplus/1204390523/1">>>1</a>
<a href="jumpres/read.cgi/dqnplus/22043905235/34">>>34</a>

スレッドまとめサイトの作成においてアンカーのタグだけ外したいのです
よろしくお願いします



278 名前:nobodyさん mailto:sage [2008/03/05(水) 18:23:39 ID:???]
>>277
実装言語が Perl と仮定して (Perl でなければ >>1 を読んでちょ) 、こんなかんじ?
s/<a href=".+?">(.+?)<\/a>/$1/g;

279 名前:nobodyさん mailto:sage [2008/03/05(水) 18:52:35 ID:???]
ありがとうございます

280 名前:nobodyさん mailto:sage [2008/03/16(日) 09:40:37 ID:???]
PHPの正規表現はバグバグなのでバージョンが違えば動作が変わる上に、難しいパターンになるとすぐ落ちる。

281 名前:nobodyさん mailto:sage [2008/03/16(日) 12:34:04 ID:???]
嘘書くなよ。

282 名前:nobodyさん mailto:sage [2008/03/16(日) 20:44:54 ID:???]
パターン修飾子にパラメータを渡して、長い文字列を検索するとボロボロ落ちる。常識だよ。

283 名前:nobodyさん mailto:sage [2008/03/17(月) 06:09:10 ID:???]
rubyのutf-8判定とかもやばそうだね

284 名前:nobodyさん mailto:sage [2008/03/17(月) 08:59:29 ID:???]
pcreのバグだね。
pcre-devのメーリングリストでもよんどいて損はない
ttp://www.exim.org/lurker/list/pcre-dev.ja.html

285 名前:nobodyさん [2008/03/19(水) 14:02:11 ID:6LA3ff9b]
初めて書き込みさせていただきます。

たとえば文字列が

{if(a)}
あああ
{if(b)}
いいい
{/if}
{/if}

と入れ子があったときはどのようにマッチさせたらいいでしょうか?
PHPでお願いします。

286 名前:nobodyさん mailto:sage [2008/03/19(水) 15:32:59 ID:???]
入れ子のマッチは正規表現 (だけ) では無理。と憶えておくと良いことがあるらしい。

287 名前:ジョアン [2008/03/28(金) 16:46:01 ID:FsCFbn2K]
perl の正規表現をPHPに書き直しているのですが、どうしてもわかりません。
Perlではマッチした前後を $` $' で取得できますがPHPではどうして取得するのでしょうか?




288 名前:nobodyさん mailto:sage [2008/03/29(土) 12:12:17 ID:???]
つマニュアル


289 名前:nobodyさん mailto:sage [2008/04/12(土) 11:24:34 ID:???]
見 れる

290 名前:nobodyさん mailto:sage [2008/04/13(日) 12:03:16 ID:???]
>>287
括弧

291 名前:nobodyさん mailto:sage [2008/04/26(土) 13:57:41 ID:???]
age

292 名前:nobodyさん mailto:sage [2008/05/04(日) 23:26:54 ID:???]
オライリーの正規表現三版
ほしいけど高いね

293 名前:nobodyさん mailto:sage [2008/05/19(月) 20:19:05 ID:???]
phpでhoge("****","*****");の****と*****を[1][2]に入れたいのですがどうすればいいでしょうか?

294 名前:nobodyさん mailto:AGE [2008/05/23(金) 20:19:21 ID:???]
AGE

295 名前:nobodyさん mailto:AGE [2008/05/23(金) 20:19:44 ID:???]
AGE

296 名前:nobodyさん [2008/06/05(木) 16:44:59 ID:0yepAPED]
すみません、FC2ブログのIPブロック条件のために、正規表現を書かなければならなくなりました。
そこで、合っているか教えてくださいー。

IP 61.78.0.0〜61.85.225.225 をブロックしたいのです。

このための表現として、私のつたない知識を使って書いてみると

^61\.[78-85]\.[0-9]+\.[0-9]+

なのかなと思ってますが、あってますか?
どうぞよろしくお願いします。

297 名前:nobodyさん mailto:sage [2008/06/05(木) 17:25:51 ID:???]
^61\.(?:7[89]|8[0-5])\.

こうじゃないかな



298 名前:nobodyさん [2008/06/05(木) 18:12:26 ID:0yepAPED]
>>297
ありがとうございます。

^61\.[78-85]\. のところが、^61\.(?:7[89]|8[0-5])\.
って言う意味ですよね?
なるほど。78-85じゃダメなんですね。ありがとうございます!


299 名前:nobodyさん mailto:sage [2008/06/06(金) 03:25:44 ID:???]
これが一番わかりやすい。以上

^61\.(78|79|80|81|82|83|84|85)\..*


300 名前:nobodyさん mailto:sage [2008/06/08(日) 17:41:28 ID:???]
PHPで、1ページ分のHTMLのソースが$sに入っているとします。

ここで、この$sから特定のタグだけを削除したいのですが、うまくいきません。

例えば<meta 〜〜〜 />というタグが複数あったとして、これをすべて取り除いたソースを作りたいのです。

$s = eregi_replace("<meta.*?>", "", $s);

とやってみたのですが、$sが空になってしまうのです。

ご指南ください。

301 名前:nobodyさん mailto:sage [2008/06/08(日) 22:40:27 ID:???]
2過去ログぐらい嫁という言葉は一見突き放しているように見えて
その質問の答えはこのスレの中にあるよという、ヒントを出しているわけで
まぁ、ツンデレなわけです。

302 名前:nobodyさん mailto:sage [2008/06/09(月) 02:40:38 ID:???]
>>300
ereg は最短マッチの芸当はできない。
pregでもつかっとけ。


303 名前:nobodyさん mailto:sage [2008/06/09(月) 06:50:27 ID:???]
>>300
'<meta[^>]*>'

304 名前:nobodyさん mailto:sage [2008/06/09(月) 23:50:23 ID:???]
300です。

ありがとうございます!

そうなんです、最短マッチが動かないなぁと思っていて、まさかeregが
最短マッチできないとは思いませんでした。

pregでやって解決しました!!


305 名前:nobodyさん mailto:sage [2008/06/11(水) 15:58:44 ID:???]
300と似てるかもしれないのですが
<a href="aa">11</a><a href="bb">22</a> こういう文字列があるとき
11と22だけを取り出したいと思い
preg_match_all("/<a(.*)>(.*)<\/a>/", 元, $test)
とやってみたところ、取り出せたのが
href="aa">11</a><a href="bb"と22になってしまいました。
?をつけてみてもうまくいきませんでした。

意図したように取り出したい場合どのように記述すればいいのでしょうか?
使用している言語はphpです。

306 名前:nobodyさん mailto:sage [2008/06/11(水) 21:01:33 ID:???]
>>305
色々間違えてる。

まず、Aタグで囲んでる部分だけ抜き出すなら( )のペアは一個でいいはず。
次に?を使ってみたと言うが多分何か勘違いしてる。
300はわかってて最短マッチさせてるが305わかってないだろう?
*を?に置き換えたりしてないか?

307 名前:nobodyさん [2008/06/12(木) 00:47:05 ID:Hj50XmAm]
JavaScriptで下記のようなデータを取得したいです。

hogehoge[1]→1
hogehoge[123]→123
hogehoge[1243][]→1243

[]の中身を取得したく、[]が2つあった場合は最初の[]の中身を取得します。
(ただし、2個目の[]は常に空です。)

hogehogeは任意の文字列で、[]の中身は何桁か分からない数字の繰り返しです。

以上ご鞭撻の程お願いします。



308 名前:nobodyさん mailto:sage [2008/06/12(木) 08:16:53 ID:???]
>>307
スレタイ

309 名前:nobodyさん mailto:sage [2008/06/12(木) 14:43:44 ID:???]
/\[([1234]+)\]/

310 名前:nobodyさん mailto:sage [2008/06/12(木) 14:53:37 ID:???]
GJ

311 名前:nobodyさん [2008/06/28(土) 08:39:36 ID:9QUTsyON]
PHP質問スレから誘導されてきました。

使用言語はPHPです。
以下のような変数があります。
$str = <<<EOM
あああ<br />
いいい<br />
ううう<br />
<!--S-->
えええ<br />
おおお<br />
<!--E-->
EOM;

このうち<!--S-->と<!--E-->で囲まれている<br />だけを削除したいのですが、
正規表現を使って綺麗に書けるでしょうか?
以下のように試したのですが、<!--S-->と<!--E-->が消えるだけでした。
$str = preg_replace("/<!--S-->([\W\w]+)<!--E-->/",str_replace("<br />","","\\1"),$str);
また、<!--S(E)-->で囲まれている部分は改行や半角英数字などが含まれる場合があります。
どなたかご教示いただけますでしょうか。よろしくお願いいたします。

312 名前:nobodyさん mailto:sage [2008/06/28(土) 10:12:28 ID:???]
substr_replaceとstrposでできそうな気がするが

313 名前:311 mailto:sage [2008/06/28(土) 12:26:16 ID:???]
>>312
ありがとうございます、おかげで解決しました!

314 名前:nobodyさん mailto:sage [2008/07/02(水) 18:58:36 ID:???]
,"/web/sendmail.php","10","10","2000"
こういう感じの文章の
,"2000"
のみ抽出したいんですが、どう書けばいいんでしょうか?

",".*[0-9]"$
だと"10","10","2000"まで拾っちゃうんです・・・。

315 名前:nobodyさん mailto:sage [2008/07/02(水) 21:54:01 ID:???]
,\"[0-9]{4}\"

316 名前:314 mailto:sage [2008/07/03(木) 15:40:28 ID:???]
>>315
ありがとうございます。
確かに、それで例は拾えましたが、10と2000の部分は変動するんです。
桁も4桁だったり5桁だったりと様々なので、どうしたもんかなと・・・。

317 名前:nobodyさん mailto:sage [2008/07/03(木) 15:46:05 ID:???]
,\"[1-9][0-9]*\"



318 名前:314 mailto:sage [2008/07/03(木) 15:53:01 ID:???]
>>317
ありがとうございます。

それだと ,"10","10","2000" まで拾ってしまいます・・・。
書き忘れていましたが、秀丸を使って一括選択しています。

319 名前:nobodyさん mailto:sage [2008/07/03(木) 16:04:08 ID:???]
> 10と2000の部分は変動するんです

どう変動するんだよ
とり出したい場所の条件を日本語で書いてみ

>315を5桁にも対応させるだけなら
,\"[0-9]{4,5}\"

320 名前:nobodyさん mailto:sage [2008/07/03(木) 16:05:46 ID:???]
>>318
,\"[1-9][0-9]*\"$


321 名前:314 mailto:sage [2008/07/03(木) 16:14:35 ID:???]
>>320
ありがとうございます!!!出来ました!!!
ありがとうございましたー。

>>319
ありがとうございます。
>>320で解決しましたが、極端な話1〜99999999の間で変動します。

322 名前:nobodyさん mailto:sage [2008/07/03(木) 16:21:37 ID:???]
>>321
自然数と言え

323 名前:nobodyさん mailto:sage [2008/07/03(木) 18:01:39 ID:???]
314 は情報小出し厨という事が解ったから、はやく死ね

324 名前:nobodyさん mailto:sage [2008/07/03(木) 19:43:29 ID:???]
そもそも正規表現スレで「こういう感じの文章」なんて質問する時点で(ry

325 名前:nobodyさん mailto:sage [2008/07/03(木) 20:01:56 ID:???]
抽象的な表現の質問はスルー

326 名前:PHP [2008/07/04(金) 18:37:34 ID:DM0Om0jz]
PHP 正規表現

PHPの正規表現を勉強しているのですが、どうもうまくいきません。今回は一番簡単な正規表現をつくったのですが、どうやったらよいのでしょうか。

$h = '(名前)様の会員IDは(abc12)で、(5)番目に偉い方です。';

とあったら、名前、会員ID、番号を抜き出すには、どのようにしたらよいのでしょうか?
実際に()は使用しません。
また、$1 や $2 などを使いたいのですが、解説までできればお願いしたいです。
一応自分なりに考えました。
preg_match('/^*.([a-zA-Z0-9]){2}([0-9]+)','名前$2.ID$1 $3 番目に偉い');
()を使えば、2つマッチさせたいときなどに分けることができるのでしょうか?
(名前)様は(数字)
例:太郎様は5

このとき太郎様という日本語の文字を取得するには/^(+.)([0-9])$/

ここで名前は$1になり、数字は$2になるのでしょうか?
どのような時に$1や$2がどっちがどっちなのかは、どのようにしたらわかるのでしょうか?


長々した質問すいません。わかるかた教えてください。

327 名前:nobodyさん mailto:sage [2008/07/04(金) 23:02:41 ID:???]
www.php.net/manual/ja/book.pcre.php

取り敢えず、ここを *よく読んで理解* しろ。



328 名前:nobodyさん [2008/07/15(火) 00:11:32 ID:PMHjKbcP]
質問させて下さい。
PHP5を使っています。
PHPの正規表現関数を使ってデータを取得しようと思っているのですが上手くいきません
<INPUT maxLength=20 name=id value="">
このような文字列を対象に、文字列「type」が含まれていない場合、後方の「maxLength=20 name=id value=""」
を取得したいのです。
全文に対して繰り返し取得したいのでpreg_match_allを使っています。

preg_match_all( "/<input (^type)[^<](.*?)>/is", $data, $matchs )
このように書いたのですがヒットしてくれません。
ドキュメントを見ると、特定文字に関しては[^a-z]のような書き方で対応できるのですが
文字列に関してはどのようにすればよいのでしょうか?
アドバイス頂ければ幸いです。
宜しくお願い致します。

329 名前:nobodyさん mailto:sage [2008/07/15(火) 02:02:18 ID:???]
>>328

悪いこたいわないから二段階で抽出しとけ。
先読みを使えば書けないこともないけど、メンテできなくなるぞw


330 名前:328 [2008/07/15(火) 03:07:47 ID:PMHjKbcP]
>>329
レス有り難う御座います。
一段階目は
preg_match_all( "/(<input 「typeを含まない文字列にマッチするような正規表現」[^<]>)/is", $data, $matchs )
となると思うのですが、この部分はどのようにして書けばよいのでしょうか?
はじめ、二段階抽出も考えたのですが、結局
「typeを含まない文字列にマッチするような正規表現」がどうしてもわからずでした。

331 名前:328 mailto:sage [2008/07/15(火) 08:05:16 ID:???]
自己レスですが、夜通し色々試していたらいけました。
お騒がせしました。
取りあえず、該当範囲をpreg_match_allで取得後、preg_matchでtypeがあるか判定して二段回抽出しました。

332 名前:nobodyさん [2008/07/17(木) 17:35:14 ID:LcfXPY+p]
<<が出てきて、その後初めて<br><br>が出るところまでのマッチ方法を教えてください。
pregです。

例えば、
hogehoge<<hogehogeh<br>oge<br><br>hogehoge<br><br>hoge<<hoge の
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~    の部分です。

333 名前:nobodyさん mailto:sage [2008/07/17(木) 17:53:17 ID:???]
<<.*?<br><br>

334 名前:332 mailto:sage [2008/07/19(土) 19:22:36 ID:???]
>>333
333おめです
なぜか、
hoge<<hogehog
eh<br>oge<br><br>hoge
だとマッチしないのですが。

335 名前:nobodyさん mailto:sage [2008/07/19(土) 19:32:09 ID:???]
<<【¥S¥s】*?<br><br>

336 名前:nobodyさん mailto:sage [2008/07/20(日) 09:34:06 ID:???]
できました。スマソ

337 名前:nobodyさん mailto:sage [2008/07/20(日) 11:43:35 ID:???]
携帯絵文字をすべて
「絵」に置き換えすることはできないのでしょうか?
preg_replace("/[ - ]/","絵",$hoge);



338 名前:nobodyさん [2008/07/20(日) 12:01:15 ID:LU799vx+]
>>337
キャリアは?

339 名前:nobodyさん mailto:sage [2008/07/20(日) 12:03:54 ID:???]
>>338
SoftBankです。
余裕があればau,DoCoMoもですが。。。

340 名前:nobodyさん mailto:sage [2008/07/20(日) 12:18:57 ID:???]
>>337
置き換える事はできるけど、正規表現だけでは無理

341 名前:nobodyさん mailto:お願いします [2008/07/20(日) 12:27:01 ID:???]
>>340では、正規表現以外のものもOKなので、
教えていただきたいです。

342 名前:nobodyさん mailto:sage [2008/07/20(日) 13:09:57 ID:???]
絵文字 変換 preg とかでググればいくらでも出てくるだろ。。。
ここで聞くより100倍速い。

343 名前:nobodyさん [2008/07/24(木) 00:50:31 ID:/c2OsNI4]
example.htmlに書かれた
<table>

344 名前:nobodyさん [2008/07/24(木) 00:58:57 ID:/c2OsNI4]
>>343
誤爆した。。申し訳ない。。
example.htmlに書かれた
<table>
<tr><th>2ちゃんねる</th><td>WebProg板</td></tr>
</table>
をphpのfopen, fgetsで1行ずつ読み取っています。
<tr>から始まった行の「2ちゃんねる」とWebProg板「WebProg」部分のみ抽出したいので
preg_replace("/^<tr><th>(.*?)</th><td>([a-zA-Z])</td>/i","$1$2",$str);
としたのですが、うまく抽出できません。
アドバイスをいただければありがたいです

345 名前:nobodyさん mailto:sage [2008/07/24(木) 01:43:31 ID:???]
/^<tr><th>(.*?)</th><td>([a-zA-Z])</td>/i

正規表現が / で始まってるから / で終わることになるわけだけど、途中に</th>ってのがあるわけよ

m#<t[dh][^>]*>(.*?)</t[dh]><t[dh][^>]*>(\w+)#i
こんな感じになるかな

346 名前:nobodyさん mailto:sage [2008/07/24(木) 23:33:27 ID:???]
デリミタの問題だけじゃないの?
preg_replace("/^<tr><th>(.*?)<\/th><td>([a-zA-Z])<\/td>/i","$1$2",$str);


347 名前:nobodyさん mailto:sage [2008/07/25(金) 08:54:32 ID:???]
これって[a-zA-Z]、[a-zA-Z]+こうしなくてもいいの?



348 名前:nobodyさん [2008/07/27(日) 01:11:32 ID:sEx2Pn85]
質問させてください。

サクラエディタに鬼車5.9.1を搭載して正規表現の勉強をしているのですが、手元にある詳説正規表現には

(<)?\w+(?(1)>)

このような例があり、<があれば>のマッチを試みる?ということができるみたいです。

ただ、鬼車はこの表現をサポートしていないみたいです。
www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt

同様のことを鬼車でも実現する方法ってあるのでしょうか?

349 名前:nobodyさん mailto:sage [2008/07/29(火) 05:43:25 ID:???]
一番最初に出てきた「=」だけ反応するにはどうしたらいいでしょうか。
C#です。

350 名前:nobodyさん mailto:sage [2008/07/29(火) 19:46:22 ID:???]
行頭の=という意味なら
/^=/m
だけどC#での正規表現の使い方は知らんので応えられん。

351 名前:nobodyさん [2008/08/06(水) 01:01:06 ID:hVakYDWk]
PHP5覚えたての初心者です
スレ冒頭に()と(?:)の違いについて質問されてましたが
?:の意味ってなんですか?
わかりやすい解説ページなどもあれば教えてください。

352 名前:nobodyさん mailto:sage [2008/08/06(水) 02:34:12 ID:???]
google

353 名前:nobodyさん mailto:sage [2008/08/06(水) 19:40:10 ID:???]
>>351
?:じゃ?と:だよ。
(?:〜)で意味をなす。

354 名前:nobodyさん [2008/08/21(木) 14:34:46 ID:wSsr/o3s]
質問させて下さい。
PHP5を使用しています。
文字列内にマルチバイト文字が一つでも含まれていれば真と言う正規表現を行いたいのですが
どのようにすればよいでしょうか?
ドキュメント等から調べてみて、
mb_ereg("[0-9a−zA−Zあ−んア−ン]", $str )
のようにしてみたのですが、これでは漢字にヒットしません。

アドバイス頂ければ幸いです。
宜しくお願い致します。

355 名前:nobodyさん mailto:sage [2008/08/21(木) 14:44:38 ID:???]
単純に先頭ビットがおったってるかどうか見ればよくない?

[\x80-\xff]

356 名前:nobodyさん mailto:sage [2008/08/21(木) 15:28:45 ID:???]
>>355
ありがとうございます。
やってみます。

357 名前:nobodyさん mailto:sage [2008/08/22(金) 02:32:16 ID:???]
>>354
1バイト文字を列挙したのを否定すれば?

あと、文字コードによっては半角カナがマルチバイトだったり
そうじゃなかったりするんだけど、どうするのかな?




358 名前:nobodyさん [2008/08/25(月) 10:35:16 ID:P/JycA8t]
htmlのタグを削除するのに、ふつうは
$line =~ s/<\/?[^>]+>//g; ----(1)

だと思うけど、どこかで見た方法では、

$line =~ s/<[^>]*(>|$)//g; ----(2)
となってた。これ動作は同じなのかな?(2)の意味がイマイチ分からない。

359 名前:nobodyさん mailto:sage [2008/08/25(月) 20:52:33 ID:???]
(1)の \/? は書いても意味ない(/は[^>]に含まれるから)
(2)の (>|$)は、$lineという変数名から推測するに行単位で読み込んで逐次処理した
場合に、タグの途中で改行されていて>が見つからなくても行末まで削除する為?
でもそうしたら次の行で処理がうまく行われないしよくわからん

行単位だとタグ途中で改行される場合もあるから全部読み込んで一気に処理がいい
s/<.*?>//g;
s/<[^>]*>//g;
などなど・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<179KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef