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


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

正規表現 Part7



1 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 15:16:48 ]
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

【 前スレ 】 正規表現 Part6
pc12.2ch.net/test/read.cgi/tech/1241537764/

321 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 15:36:10 ]
正規表現とワイルドカードを一緒くたにすると
怖いお兄さん(お姉さんも可)に怒られるからよい子は注意な

322 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 18:26:02 ]
心配するな。
ここで正規表現って騒いでるやつも知らないから。
その証拠にワイルドカードぐらいしか言えないだろ?w

323 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 20:39:02 ]
ドロー4!

324 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 09:01:52 ]
最近、SQLってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?

325 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 09:03:32 ]
最近、HTMLってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?

326 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 18:51:05 ]
最近、クラウドコンピューティングってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいに頭がクラウドな香具師は知らなくても無問題でしょうか?

327 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:53:00 ]
企業がマスゴミをだますときに使う

っつーかスレ違い

328 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 21:49:10 ]
正規表現を導入することでミッション クリティカルなシステムから
モバイル アプリケーションまで対応できる高い信頼性を備えた
アプリケーションを構築することができます。
正規表現で企業内に存在する多数のデータを統合し、全社員がデータを活用できる
ビジネス インテリジェンス基盤として堅牢で実績のあるハイパーバイザーを構築し
不要なリスクやオーバヘッドを回避できます。
正規表現の仮想インフラストラクチャ機構にはデータを安定して管理するさまざまな機能はもちろん、
データを活用・分析する機能まで、すべての機能がオールインワンで備わっているます。
高いスケーラビリティとバランスのとれたトータルクオリティーを活用することにより
あなたの快適ライフをサポートします。

329 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 21:58:55 ]
OBICの中の人乙



330 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 09:29:54 ]
>>328
ユーのランゲージはファンタスティックね

331 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 10:15:52 ]
ルー柴乙

332 名前:デフォルトの名無しさん [2010/07/14(水) 22:16:49 ]
●環境
vb.net

●したいこと
3文字以上の繰り返し表現を抽出

●サンプル
例文1)死にたい死にたい死にたい死にたい死にたい
結果1)死にたい

例文2)筋肉バスターと阿修羅バスター
結果2)バスター


ってのを正規表現でやるのは無理でしょうか・・・

333 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 00:06:01 ]
例文3) 阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター

こういうときはどういう結果になって欲しいの
処理系側に頼るにしてもあんまりロジック考えたくない

334 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 00:54:48 ]
>>332
英語ならともかく日本語じゃ無理じゃないか
形態素解析 単語 頻度 なんかでぐぐるといいかも

335 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 03:49:25 ]
>>333
>  阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター

「阿修羅」
「バスターと」
じゃね?

336 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 04:52:36 ]
部屋とYシャツと私

337 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 07:44:51 ]
ヘアとワイセツとタワシ

338 名前:デフォルトの名無しさん [2010/07/15(木) 08:16:33 ]
女子高生と機関銃と私

339 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 09:16:17 ]
中国と韓国と北朝鮮



340 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 10:14:07 ]
>>316
phpならsplit("\]\]\[\[", str)で配列に分割して
最初と最後の要素から"[["と"]]"を取り除いた方が早いんじゃない?
正規表現にこだわる理由は何だろう

>>339
処理結果:特定アジア

341 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 10:53:38 ]
'[[hoge]] fuga [[piyo]]' みたいな入力に弱いのと直感的じゃないからじゃまいか
できれば「文字列を左から走査していき「[[ と ]] に囲まれた文字列」を
すべて拾い上げる」ように書きたいところ

というわけで preg_match_all に "\[\[(.*?)\]\]" を渡すとかどうだろ
PHP知らないんで適当だが

342 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 12:05:18 ]
>316です。
ありがとうございます。
実際には
[[hoge]]今日は[[fuga]]いい[[tenk]]天気です
みたいに間に文字は入るので、正規表現でしか出来ない(効率の面で)と判断しました。
この中のhoge、fuga、tenkiのみを配列の中に入れたかったのです。
結局preg_match_allで "/\[{2}[0-9A-Za-z]*\]{2}/"とする事で解決しました。

343 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:24:03 ]
>>335
「スター」は抽出しないのか?

344 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:30:15 ]
>>343
それを抽出するなら「スターと」「ターと」も必要じゃないか?

345 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:38:40 ]
ちゃんと作ったらもっと色々でてきそうだなw

346 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:08:06 ]
/**
 コメント
**/
// コメント

上記のコメント箇所で、コメント内の各一文字を「_」に置き換える方法はあるでしょうか?
コメント行を削除せずに、一度コメントを省いてからソース検索をしたいと思っておりまして。

____↓
_____↓
____↓
_______↓

347 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:12:00 ]
/\/[\/*].+(\n|*\/)/_/s

348 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:15:53 ]
実際のプログラムだと運がよければできるぐらいだな。
コメントかどうか判断がつきにくい文字列リテラルとか
あるんで病的なケースに完全に対応するのは難しい。
多少誤爆があってよければ適当にやりゃできるだろ。

正規表現といっても使い方はエディタや言語によって
違うので何を使ってやりたいかを決めてそっちのスレで
聞いたほうがいいかも。

349 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:16:18 ]
>>346
while ((c=getchar()) != EOF) {
if (c == '/') {
c = getchar();
if (c == '/') {
putchar('_');putchar('_');
while (c=getchar()) != '\n') putchar('_');
} else if (c == '*') {
LOOP:
putchar('_');putchar('_');
while (c=getchar()) != '*') putchar('_');
if ((c=getchar()) != '/') goto LOOP;
putchar('_');
}
}
putchar(c);
}



350 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 19:09:53 ]
>>349
ありがとうございます。
正規表現だけではできないですかね…

351 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 19:15:36 ]
正規表現ってマッチするだけだからねー。

352 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 10:00:25 ]
>>351
あ、すみません。
正規表現とリプレイスの組み合わせでできないですかね?

以前どこかのサイトで見かけたことがあったのですが、
場所忘れ&これを実現した正規表現だったか覚えていなくて…

353 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 11:45:54 ]
>>347
これだと1コメントで「_」になってしまいます。
コメントが10文字ある場合は「_」も10個ほしいです。
先読み、戻り読みを駆使してうまくやっていたような気がしたんですが、
すみません、思い出せないです。

354 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 12:01:28 ]
PHPならpreg_replaceとかあるが・・・。

355 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 12:09:56 ]
検索にひっかからなくするという目的なら1文字になっちゃってもいいと
思うんだけどね。不必要に問題を複雑にしてるような。

356 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 14:23:36 ]
(//|\G).+?(?=.*$)でうまくいくと思ったがちょっとおかしい

a // b  で
a ____   になると思ったが
______   になってしまう

なぜ\Gが行頭に引っかかるのだ!
ちなみにjavaです

357 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 19:15:52 ]
いや \G は文字列先頭にもマッチするもんだろう。

358 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 11:52:25 ]
>>346
「コメントを省いてからソース検索」するのが目的なのに
「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
他に目的があるのなら全部書き出して最終的に何がしたいか明示すべき

359 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 13:23:24 ]
>>358
そうですねf^^;

やりたいことはソース中の文字列で日本語コメントを抽出です。
その際、検索結果の行番号を元のソースに合わせたいです。
複数行コメントをカットしてしまうとずれが生じるので、全てスペース(改行は変換せず)を考えています。

かなり前にこのスレッドで答えをもらったと思うのですが、それを忘れてしまいまして



360 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 17:24:38 ]
>>359
> その際、検索結果の行番号を元のソースに合わせたいです。

「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない

361 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 15:50:50 ]
仕様がわからない状態でコーディングはできない

362 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 17:33:47 ]
自分が何をしたいのか、を他人にうまく伝えられない人

363 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 17:40:10 ]
>「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
わからんのなら、おとなしくすっこんでろよw
仕様は>>346で明確に示してあるだろ。これ読んでもわからんの?
わかる人が答える。わからない人は指をくわえて黙って見ている。
これが掲示板の作法だろ。

364 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 17:45:16 ]
>>346だけ読んで理由がわかったらエスパーすぎる

行番号を維持するだけでなく桁数/文字数も維持したいのだろう

365 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 20:10:42 ]
エスパーも何も、これ以上わかりやすい説明は無いと思うが

366 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 20:47:16 ]
せめて文字列リテラル中にコメントと紛らわしい文字列は
ないぐらいは仮定しないととんでもなく難しい気がするな。

あとこういうのを間違わずにやろうとすると結構大変。

// hogehoge /* hogehoge
/* hogehoge
// hogehoge */ hogehoge

367 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 07:41:17 ]
>>362
むしろ自分が何をしたいのかさえ自分で理解できていないレベル

368 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 07:48:43 ]
>>366
コメントについてはネストしたものを正規表現だけで取り扱うのは不可能と
「詳説 正規表現」に書いてあるけどな
その例はネストしていないけど

369 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 11:49:47 ]
>>368
そんなもん複数行モードで(/\*.*?\*/|//.*$)だろ…
ここで質問した俺が馬鹿だった
それじゃ一生答えが導けないよ



370 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 11:56:56 ]
/* ここからコメント /* ネスト */ ここもコメント */

こういうのをなんとかするのは普通の正規表現の範囲では無理。

371 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 12:02:01 ]
文字列中に改行があってもマッチさせることは正規表現で可能でしょうか?

例えば something を検索したいとすると
some\nthing、so\nmething, someth\ning などもマッチした、と判定したいんです。

今はこんな感じで処理しています。
「改行の位置を記憶→改行を全削除→文字列のマッチ→改行をもう一度挿入」
これが正規表現でできると楽になるので方法がわかる方いたらどうか教えてください。

使っている言語はJAVAですが、
他の言語の正規表現でもできるかどうか教えてもらえると助かります。


372 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 12:38:56 ]
>>369
それで適当な固定文字列に置き換えるだけなら簡単なんだけど
文字数を保存して間を_にしたいとかいうから面倒なわけです。

perlならeval使えるから加工するプログラム書けば一発ですが、ただの
エディタの置換機能だとそうもいかん場合も多いんじゃねーの? 何を
使ってるのかも示されてないのでなんともいえんけどさ。

$str = qq{
// hogehoge /* hogehoge
/* hogehoge
// hogehoge */ hogehoge
};

$str =~ s%(/\*(.*?)\*/)|(//([^\n]*))%($1 ne '')? ('/*'.to_underscore($2).'*/'): ('//'.to_underscore($4))%gse;

print $str;

sub to_underscore {
my($s) = @_;

$s =~ s/\S/_/g;

return $s;
}

373 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 07:56:23 ]
>>369
要求仕様を先に確認しろ

>>371
処理系のよっては改行文字を無視するモードがある
Javaはどうだったかな

374 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 09:10:16 ]
>>371
perlなら
undef $/
だったかな

375 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 09:17:10 ]
>>371
s\n?o\n?m\n?e\n?t\n?h\n?i\n?n\n?g

376 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 10:42:50 ]
ふざけないでください

377 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 22:29:01 ]
Perlで前方一致の中に正規表現を使うことってできますか?
/(?<=.*_number=)\d*/のような感じでやりたいのですが・・・

378 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 23:25:35 ]
>>377
やって見りゃVariable length lookbehind not implementedになるのはすぐわかるだろ。
この例だと.*は余計なので取り除いて /(?<=_number=)¥d*/ にすればいいと思うが。



379 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 06:32:21 ]
>>378
ありがとうございます、できないんですね・・・
では、/(?<=x_.*_number=)\d*/のように書きたい場合は他に書き方はあるでしょうか?



380 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 07:10:06 ]
\d*を見つけられればいいって感じなら
/(x_.*_number=)(\d*)/
みたいにすれば?

381 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 07:17:20 ]
>>380
ありがとうございます。
\d*を見つけるだけでなく、$&に取り出したいです。

382 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 08:39:22 ]
perlなら¥K使えば?

perl -e '"x_hoge_number=100"=~/x_.*_number=¥K¥d*/ and print $&'




383 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 13:52:06 ]
$&じゃなきゃダメなの?数字欲しいだけなら
/x_.*_number=(\d*)/
で$1見るのが楽チンな気がするんだけど。

384 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 20:18:38 ]
>>382
>>383
数字だけ取り出せれば良かったので$1を使うことにしました。
ありがとうございました。

385 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 17:59:53 ]
●正規表現の使用環境
.net Framework 2.0 - 3.5 (C#)

●検索か置換か?
検索

●説明
artist, titleの各グループの文字列を取得したい

●対象データ
Artist - Title

●希望する結果
artist = Artist
title = Title

よろしくおねがいします。

386 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 18:44:28 ]
正規表現の詳しいサイトとか知りませんでしょうか?
ずぶの素人なので、どこのサイトで勉強したら良いのか分りません。


387 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 18:55:38 ]
適当なテキストエディタ入れて適当な正規表現解説サイト見て
適当に入力して試してたら数分で理解できるよ

388 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 19:12:44 ]
>>387
適当厨ww

389 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 19:16:28 ]
右も左もわからないんならテンプレのここでいいんじゃないか
funcchan.blog16.fc2.com/

>>385
こういうこと?
違ってるならもっと具体的な入力データとほしい結果の例を挙げて

using System.Text.RegularExpressions;
...
string[] words = Regex.Split("Artist - Title", " - ");
string artist = words[0];
string title = words[1];



390 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:04:02 ]
>>389
Artist, Album, Titleが含まれている文字列からそれらを正規表現で抽出したいです。
例えば
山田耕筰 - 赤とんぼ

(?<artist>.*?) - (?<title>.*?)
みたいな感じで。
元の文字列がどういう形式か不定なので、Splitはあまり使いたくないのですが・・・

391 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:18:42 ]
Artist や Title に ' - ' が含まれたりする形式だと困るよね。

392 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:44:27 ]
うん、" - " がフィールドの区切りとして使えないのなら無理じゃない?
それぐらいは保証されてると思って>>389を書いた

自分だったら " - " が文字列に2つ以上入ってたら不正な入力として受け付けないか
許される状況であれば脇によけておいて後で手作業で処理するよ

393 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:44:49 ]
それは人間が見ても判別困難ですし、考慮していません。
とりあえず
(?<artist>.*) - (?<title>.*?)
にしたところ希望の動作は得られましたが、
Artist - Title
そのものがグループ(グループ名なし)として抽出されています。
これは解決できますか?

394 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:47:02 ]
よくわかんないから C# のコード貼ってちょ

395 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:47:19 ]
おっと、>>393>>391宛です。

396 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:47:59 ]
>>393
解決って何よ
希望の動作したならそれで十分でしょ

397 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:52:21 ]
>>396
おっしゃる通りなんですけど、なんか気になるので。

>>394
一応ソースです。

//source = "山田耕筰 - 赤とんぼ"
//expression = "(?<artist>.*) - (?<title>.*?)"
Match match = expression.Match(source);
Group group;

group = match.Groups["artist"];
if (group == null)
{
  artist = string.Empty;
}
else
{
  artist = group.Value;
}
・・・
以下Groups["title"]、Groups["album"]について同様

398 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 22:03:03 ]
>>397
全体へのマッチはグループ指定してないからグループ名なしのマッチでいいじゃん

399 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 22:26:13 ]
それは仕様ですか?それともexpressionのせいでしょうか?



400 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 22:41:39 ]
仕様。ほかの言語も似たようなもの
ttp://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.groupcollection%28v=VS.95%29.aspx
> このコレクションには、1 つ以上の System.Text.RegularExpressions.Group
> オブジェクトが格納されています。一致が成功した場合、コレクションの
> 1 つ目の要素には、一致した文字列全体に対応する文字列が含まれます。

あと>>397の正規表現だと (?<title>.*?) は空文字列にマッチしてないかな

401 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 23:03:41 ]
>>400
なるほど、仕様なのですね。
確かに(?<title>.*?) は該当箇所が空の場合でもマッチしてます。
該当箇所が空の場合マッチさせないようにするには
(?<artist>.*) - (?<title>.*)
とすればOKでしょうか?

402 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 23:07:29 ]
*を+にすればいいんじゃね?

403 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 23:26:07 ]
>>402
(?<artist>.+) - (?<title>.+)
にしたらマッチしなくなりました。

動作上はこれで問題ありませんので、これにしようと思います。
今回は大変勉強になりました。
>>389-402のみなさん、ありがとうございました。

404 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 06:50:19 ]
質問があります。

私は、HTMLでホームページを作ったのですが、
titleタグをちゃんといれて作ったのですが
h1タグを入れるのを忘れてしまっていました。

そこで、各ページのh1タグに、それぞれのtitleタグと同じものを入れたいのですが
ホームページのページ数が1000以上なので、
多過ぎて大変です。

そこで、正規表現をつかって、うまく対処する方法を教えてください。

405 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 06:59:32 ]
stylesheet

406 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 09:06:17 ]
>>404
<title>(.*?)</title> で title のテキストを検索
あとは <body> を検索して <body><h1>$1</h1> に置換

わけわかんなかったら親切な人がスクリプト貼ってくれるのを祈る

407 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 11:43:08 ]
<?php
$path = "./";
$ext = ".html";
$insert_point = "<div class=\"hoge\">";

$d = dir($path);
while($f = $d->read()){
if(strpos($f,$ext) === FALSE)
continue;
$txt = file_get_contents($f);
if(preg_match('/<title>(.*)<\/title>/', $txt,$hits)){
$txt = str_replace($insert_point,"$insert_point\n<h1>$hits[1]</h1>",$txt);
if(!$fp = fopen($f,"w"))
continue;
fputs($fp,$txt);
fclose($fp);
}
}
?>

408 名前:デフォルトの名無しさん mailto:sage [2010/08/15(日) 14:26:57 ]
拙い質問で申し訳ないのですが
現在、改行コードを含めた任意の文字列を"[\s\S]*"としているのですが
ブラケット中の最初の文字がマッチした場合、それ以降は評価しないとしたら
一般的な文章では"\s"よりも"\S"にマッチする文字の方が多いことを考えて
この場合"[\S\s]*"と直した方が速度は上がると考えて良いのでしょうか?
よろしくお願いします。

409 名前:デフォルトの名無しさん mailto:sage [2010/08/15(日) 15:12:35 ]
実際に試してみた方が早いんじゃね?と言ってみる



410 名前:408 mailto:sage [2010/08/15(日) 15:18:56 ]
そうですか。
他で質問してみます。どうもありがとうございました。

411 名前:デフォルトの名無しさん mailto:sage [2010/08/16(月) 09:20:33 ]
>>410
正規表現エンジンの動作を理解した方が早道






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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