- 1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
- 【正規表現道場の掟】
・言語不問 ・質問も大歓迎。使用言語を書くのを忘れずに。 正規表現と関係ない話・質問は他スレへどうぞ。
- 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; などなど・・
- 360 名前:359 mailto:sage [2008/08/25(月) 21:09:55 ID:???]
- 間違った、s/<.*?>//g;だと改行に対応できないから
s/<[\s\S]*?>//;みたいになるね
- 361 名前:nobodyさん mailto:sage [2008/08/25(月) 21:28:12 ID:???]
- いや、s使うだろ、普通。
- 362 名前:nobodyさん mailto:sage [2008/08/25(月) 22:34:46 ID:???]
- >>358
(2)はSGMLのショートタグの対応とか? ttp://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/appendix/notes.html#h-B.3.7 開始タグで前のタグを閉じる以外は、メジャーなブラウザは対応してなかったはずなので、 あまりこだわらなくてもいいと思うけど。
- 363 名前:358 mailto:sage [2008/08/25(月) 23:08:43 ID:???]
- ありがとうございました。
改行文字の件とか、勉強になりました。 プログラム上では、どちらも同じ動作なので、気になってたもので。
- 364 名前:nobodyさん [2008/08/27(水) 15:31:16 ID:j0h2/LpG]
- 正規表現で悩んでいます。
preg_match_all( "/((aaa|bbb|ccc).*?)(aaa|bbb|ccc|$)/is", $str, $maches ) このような形にて以下のような内容の繰り返し文を部分的に抜き出そうとしているのですが一部上手くいきません --------------------- aaa あいうえお bbb かきくけこ ccc さしすせそ --------------------- 上記正規表現では aaa あいうえお bb かきくけこ cc さしすせそ と言うように一つ目以降のパターンマッチ文字列の先頭がbbやccとして一文字かけてしまいます。 本来はbbb、cccとちゃんとヒットさせたいのですが、これが行えません。 マッチ後の文字列ポインタを「三歩歩いて二歩下がる」のようにずらす事をするか、何か他のパターンマッチ構文を 書けばいけそうだと思うのですが、どうにもよい方法が思いつきません。 お力添え頂ければ幸いです。
- 365 名前:nobodyさん mailto:sage [2008/08/28(木) 12:04:03 ID:???]
- テストしてあげるからそのままコピペできるコードに書き換えてここに載せて
- 366 名前:nobodyさん [2008/08/28(木) 18:14:41 ID:Gzy07epa]
- あいうえお かきくけこ
さしすせ そたちつてと なに ぬねの はひふへほ この 「あいうえお」「さしすせ」「なに」 を太字に置き換えるにはどうすればいいですか? (PHP) $hoge = preg_replace("/^([^ ]+)/m","<b>\\1</b>",$hoge); じゃうまくいきません。。。
- 367 名前:366 mailto:sage [2008/08/28(木) 18:25:55 ID:???]
- すいません。
自己解決しました。
- 368 名前:nobodyさん mailto:sage [2008/08/28(木) 18:44:08 ID:???]
- 解決策を書いて下さい。
- 369 名前:nobodyさん mailto:sage [2008/08/28(木) 18:50:35 ID:???]
- いやぁ
$hoge = preg_replace("/^([^ ]+)/m","<b>\\1</b>",$hoge); $hoge = str_replace("<br>","<br>\n",$hoge); って書いてましたwww
- 370 名前:364 [2008/08/29(金) 11:10:56 ID:rNMP0NTC]
- >>365
レスありがとうございます。 もう一度考え直してみて書き直すとこのようなコードになりましたPHP5になります。 // 対象文字列 $str = "ABCDaaaEFGaaaaHIJKaaaaa"; // 正規表現 preg_match_all( "/([A-Z]+?aaa.*?)([A-Z]|$)/is", $str, $maches ); // 結果表示 $c = count( $maches[1] ); for ( $i = 0; $i < $c; $i++ ) { print "=> {$maches[1][$i]}\n"; } => ABCDaaa => FGaaa => HIJKaaa これを => ABCDaaa => FGaaaa => HIJKaaaaa と表示させたいのです。 どうか宜しくお願い致します。
- 371 名前:nobodyさん mailto:sage [2008/08/29(金) 11:57:14 ID:???]
- 以前と仕様変わってるようだけど・・・
詳しい仕様を書いてないからわからんけど 先頭が一つ以上の?英大文字がつづくだけマッチして 次にa小文字が3つ以上?つづくだけマッチ を繰り返すってこと? isオプションがあるのはどういうことかわからんが /([A-Z]+aaa+)/
- 372 名前:364 mailto:sage [2008/08/29(金) 12:11:28 ID:???]
- >>371
・・・!申し訳ありません。 色々考えて試している内に頭が混乱して有らぬ方向になってしまっていたみたいです。 ちゃんともう一度考えて仕様も伝えられるようにしてから書き込ませて頂きます。 お手間をおかけいたしましてすみません><
- 373 名前:nobodyさん mailto:sage [2008/08/29(金) 12:39:10 ID:???]
- 新入社員の研修みたいでほほえましい。
- 374 名前:nobodyさん [2008/09/01(月) 15:52:31 ID:ME+mffWY]
- 使用言語はPHP4です。
PHPスレから誘導されて来ました。よろしくお願いします。 $str = '<a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a> <br />'; この文字列の中からリンク先の特定の数字とリンクテキストを抽出したく preg_match_all ( "/"."<a href=\"entry-(.*)-18\.html\">(.*)<\/a>"."/i", $str, $match ); このような正規表現を書いたのですが、実行結果は [0] => Array ( [0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a> ) [1] => Array ( [0] => 1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3 ) [2] => Array ( [0] => パイナップル ) となります。
- 375 名前:nobodyさん [2008/09/01(月) 15:53:28 ID:ME+mffWY]
- 下記のような実行結果にしたいのですが、正規表現の書き方を教えて下さい。よろしくお願いします。
[0] => Array ( [0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a> ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => りんご [1] => バナナ [2] => パイナップル )
- 376 名前:nobodyさん mailto:sage [2008/09/02(火) 00:14:52 ID:???]
- <a href="entry-(\d+)-18.html">(.*?)</a>
- 377 名前:nobodyさん [2008/09/02(火) 09:20:23 ID:gwaiq/Cc]
- >>376
うまく動きました ありがとうございました
- 378 名前:nobodyさん [2008/09/02(火) 17:55:54 ID:IiWNBMxF]
- バイオインフォマティックスに詳しい方いらっしゃいますか?perlを使って突然変異前後における終止コドンのカウントをしたいんですが、初心者なのでまったく分かりません・・・(涙)
- 379 名前:nobodyさん mailto:sage [2008/09/02(火) 18:31:39 ID:???]
- 先頭にhttpまたはttpを含まない
という正規表現はどう書けばいいでしょうか
- 380 名前:nobodyさん mailto:sage [2008/09/02(火) 18:35:50 ID:???]
- !/^h?ttp/
- 381 名前:nobodyさん mailto:sage [2008/09/02(火) 18:37:44 ID:???]
- ^([^ht]|h([^t]|t([^t]|t[^p]))|t([^t]|t[^p])))
- 382 名前:nobodyさん mailto:sage [2008/09/02(火) 19:18:50 ID:???]
- >>380
>>381 助かりました 有難うございました
- 383 名前:nobodyさん mailto:sage [2008/09/03(水) 09:02:07 ID:???]
- ^([^ht]|h([^t]|t([^t]|t[^p]))|t([^t]|t[^p])))
だとhとかttにマッチしない罠。 ^($|[^ht]|h($|[^t]|t($|[^t]|t($|[^p])))|t($|[^t]|t($|[^p])))) 普通は380のようにするけどな。
- 384 名前:nobodyさん mailto:sage [2008/09/04(木) 10:49:47 ID:???]
- ^p^
- 385 名前:nobodyさん mailto:sage [2008/09/04(木) 10:50:59 ID:???]
- ^w^
- 386 名前:nobodyさん [2008/09/04(木) 19:48:29 ID:ZxHTo/La]
- codezine.jp/article/detail/1573
こんな問題集を見つけたんだが 正規表現道場に近いな
- 387 名前:nobodyさん [2008/09/04(木) 21:53:09 ID:AVvRqwBM]
- $が肯定先読みというのは目から鱗。
- 388 名前:nobodyさん [2008/09/17(水) 17:44:57 ID:TGrFERMS]
- 質問させてください。
OSはubuntu8.04で正規表現を勉強し始めの者です。 電話番号と郵便番号が混在しているテキストファイルから郵便番号だけ 抽出するという条件なんですが、 郵便番号はxxx-xxxx(xは0-9の数字)、電話番号はxx-xxxx-xxxx(xは0-9の数字) で、grep -E [0-9]\{3\}-[0-9]\{4\} とやっても電話番号も全て抽出されてしまいます。 どこが間違っているのでしょうか。
- 389 名前:nobodyさん mailto:sage [2008/09/17(水) 17:54:16 ID:???]
- その正規表現だと電話番号にもマッチしちゃうからね。
具体的には、 xx-xXXX-XXXX の大文字Xであらわしたところ まあ宿題なんだろうからもうすこし良く考えましょう。
- 390 名前:nobodyさん mailto:sage [2008/09/17(水) 19:24:47 ID:???]
- >>389
grep -E ^[0-9]{3}-?[0-9]{4}$ でうまくいきました。ヒント有難うございます。
- 391 名前:nobodyさん mailto:sage [2008/09/22(月) 18:03:26 ID:???]
- 質問です。
下記のような配列の中から、 (2)〜(4)までのみを抽出したいと思っています。 (1) testa@hoge (2) _testb@hage (3) _testc@noge (4) _testd@nage (5) _teste@n_ge ルールとしては、 ・頭に[_]が付いている事、 ・@の後ろに[n_]が付いていない事 です。上記前提で下記のように書いたのですが、 これですと(2)しか抽出されませんでした。 $test =~ /^_.*@[^(n_)]/ @の後ろの正規表現が悪いのだと思うんですが、 この場合どのように書けばいいんでしょうか。 ご教示お願いしますm(_ _)m
- 392 名前:nobodyさん mailto:sage [2008/09/22(月) 18:09:42 ID:???]
- >>391
それじゃ文字クラスだよ。こういうときは否定先読みだろ。
- 393 名前:nobodyさん mailto:sage [2008/09/22(月) 18:13:12 ID:???]
- /^_\w*\@\w+$/ and !/\@n_/
先頭_と@の間はどんな文字でもいいのか、@以降はどんな文字でもいいのかとか 詳しいルールはわからないが、素直に分けたほうがいいと思う
- 394 名前:nobodyさん mailto:sage [2008/09/22(月) 18:18:30 ID:???]
- >>392-393
ありがとうございます! とりあえず、>>392さんの方法で抽出できました。 $test =~ /^_.*@(?!n_)./ ありがとうございました。
- 395 名前:nobodyさん [2008/09/25(木) 14:22:28 ID:bEreCYy4]
- 使用言語はPHP5です
html内のimgタグの記述部分をxhtmlにするために最後にスペースとスラッシュを付け加えたいと思い 以下の置き換えを行い成功したのですが、 $html = preg_replace('{<img (.*?)>}' ,'<img $1 />' ,$html); 元々imgタグ内にスペースとスラッシュが最後に入っているのもありますので、それ以外ということで $html = preg_replace('{<img (.*?)^\/>}' ,'<img $1 />' ,$html); このように記述してみましたが、これですと全部のimgタグに置き換えが効かなくなりました どういう記述をすればよいのでしょうか?
- 396 名前:nobodyさん mailto:sage [2008/09/25(木) 14:30:11 ID:???]
- /<img (.*?[^\/])>/
- 397 名前:nobodyさん [2008/09/25(木) 14:38:21 ID:bEreCYy4]
- >>396
動きました 素早い回答ありがとうございました
- 398 名前:nobodyさん mailto:sage [2008/10/07(火) 01:09:40 ID:???]
- 対象が
<a href="test/index.html">あああ</a> <a href="hogehoge1.com" target="_blank">いいい</a> のような文字列から test/index.html hogehoge1.com だけを取り出すにはどうすればよいのでしょうか? 使用言語はPHP5です。 preg_match("/<a href=\"(.*)\"\>.*/",$str,$m); ではtarget="_blank"が残ってしまい期待通りの結果が得られません。 最短一致というのが原因かとおもい preg_match("/<a href=\"(.*)\"{1}?\>.*/",$str,$m); としましたが駄目でした。 アドバイスよろしくお願いいたします。
- 399 名前:nobodyさん mailto:sage [2008/10/07(火) 01:57:33 ID:???]
- /<a\s.*?href=\"(.*?)\"/is
- 400 名前:nobodyさん mailto:sage [2008/10/07(火) 21:57:53 ID:???]
- >>399
無事期待通りの結果が得られました! ありがとございました!
- 401 名前:nobodyさん mailto:sage [2008/10/09(木) 19:29:23 ID:???]
- PHP5で使います
$numには、 +数字 -数字 数字 というようなパターンの時のみマッチさせたいです 数字のところは 0〜999999999までの値が入ってきますが、0以外の時に頭に0がある場合0123とかは除外したいです 試行錯誤して下記のようにしてみましたが、思った結果が得られません。エラー出まくりでなみだ目です どうかよろしくお願いします preg_match('/^(([^+]*)*(++[^-][^+]*)*)*?[^0-9]*$/',$num)
- 402 名前:nobodyさん mailto:sage [2008/10/09(木) 19:32:07 ID:???]
- [\+\-]?(?:0|[1-9]\d*)
- 403 名前:402 mailto:sage [2008/10/09(木) 19:33:52 ID:???]
- 不十分か。。
^[\+\-]?(?:0|[1-9]\d*)$
- 404 名前:nobodyさん mailto:sage [2008/10/10(金) 00:47:33 ID:???]
- >>403
ありがとうございます 動作を確認したところ 0のみの場合と数字の部分が9桁以上でもマッチしてしまうので、 ^([^0]|[\+\-]?)(?:0|[1-9]\d{1, 9}?)$ 試行錯誤してこのようにしてみましたが、全くもってマッチしなくなってしまいました どのように書けばよろしいのでしょうか?
- 405 名前:nobodyさん mailto:sage [2008/10/10(金) 00:58:41 ID:???]
- ^[\+\-]?(?:0|[1-9]\d{0,8})$
- 406 名前:nobodyさん mailto:sage [2008/10/10(金) 07:43:15 ID:???]
- >>405
できました ありがとうございました
- 407 名前:たまちゃん ◆ExGQrDul2E [2008/11/02(日) 16:02:00 ID:wDYsJgfV]
- URLが、変数$urlにいくつ使われているか調べるために
preg_match_allを使いましたが、動きません。 どのようにしたらよいか教えてください。 <?php $url = <<< URL a x.x http:// google.jp/ URL; preg_match_all ("|(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)|",$url,$out, PREG_SET_ORDER); echo count($out); ?> 実行結果: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'f' in /match.php on line 8 0
- 408 名前:nobodyさん mailto:sage [2008/11/02(日) 16:11:53 ID:???]
- 別の正規表現構文を探してきてコピペする
- 409 名前:nobodyさん mailto:sage [2008/11/02(日) 17:38:13 ID:???]
- デリミタ|で始めたならm|にする必要があるっしょ
で、途中にORの意味で|使ってるから別のデリミタにしちゃいなよ
- 410 名前:たまちゃん ◆ExGQrDul2E [2008/11/02(日) 21:36:24 ID:0rYlog69]
- >>409
回答ありがとうございます \(・∀・)/ 途中で https?|ftp で使っているのですが、 最初を || // 以外に、何を使えばよいのでしょうか? それとも \(エスケープ)させればよいのでしょうか?
- 411 名前:nobodyさん [2008/11/03(月) 20:39:21 ID:XFsZ1V0e]
- 文字クラス外部の?について。
URLの最短マッチさせる正規表現 (https?) について、 この場合なら、 http https 両方にマッチします。 (https) これなら、 https にしかマッチしません。 ここで、?の意味を調べたら、『(の意味を拡張。0回または1回の繰り返し最短マッチ』と書いてありました。なぜ (https?) これをすることによって、httpとhttpsをマッチさせられるのでしょうか?最短マッチなら、httでもいいのじゃないですか?
- 412 名前:nobodyさん mailto:sage [2008/11/03(月) 21:26:40 ID:???]
- https? なら ?は直前のsに対して0回か1回かだからね^^
- 413 名前:nobodyさん mailto:sage [2008/11/04(火) 00:18:26 ID:???]
- >>411
最短マッチではなく最長マッチじゃないの。 http までマッチしていることを前提にして、さらに s に対して 0 回または 1 回の 「より長い方」に優先してマッチする。
- 414 名前:nobodyさん mailto:sage [2008/11/08(土) 03:56:35 ID:???]
- 最短マッチて言葉は*?とか量指定子のあとにくるときの
解説文でよく使われるからそれとごっちゃになっちゃったんじゃないかな
- 415 名前:nobodyさん [2008/11/08(土) 14:37:01 ID:Ln3BC38n]
- この道場にふさわしい記事だ!!!
codezine.jp/article/detail/3039 codezine.jp/article/detail/2676
- 416 名前:nobodyさん mailto:sage [2008/11/09(日) 02:37:50 ID:???]
- >>415
正規表現がらみのスレにそのリンクはりまくってんな。 関係者?
- 417 名前:nobodyさん mailto:sage [2008/11/15(土) 02:31:51 ID:???]
- ヤター
近所の図書館に詳説正規表現が入荷したお まともなオライリ本は詳説イーサネットしかないとこだから嬉しい 以前は電子メールプロトコルがあったけど、 除籍されてリサイクルコーナーから旅に出てしまったよ
- 418 名前:nobodyさん mailto:sage [2008/11/24(月) 00:38:36 ID:???]
- 2つの正規表現を1つにまとめる方法はありますか?
A→か 7→イ という2ステップ手作業でやっていることを1ステップで済ませたいのです。
- 419 名前:nobodyさん mailto:sage [2008/12/08(月) 02:09:36 ID:???]
- PHPです。
$search="/^(.+?)<>(.*?)<>(.+)ID:(.+?)<>(.+)<>(.*)/"; preg_match($search,$res[$i],$match); $id[$i]=$match[4]; $resは2chのdatファイルを一行ごとに配列に入れた物です。 Notice: Undefined offset: 4 (略) on 47 というエラーが出てしまいます。 47行目は$id[$i]=$match[4];です。
- 420 名前:nobodyさん mailto:sage [2008/12/08(月) 02:21:41 ID:???]
- >>419ですが、自己解決しました。
1001の場合には、IDがないからでした。
- 421 名前:nobodyさん mailto:sage [2008/12/19(金) 23:54:16 ID:???]
- 正規表現の先生方、phpで質問させて頂きます。
$str = '[db]name[/db] たべたり [db]email[/db]'; preg_match_all('/\[db\].*?\[\/db\]/s',$str,$match); print_r($match); で [db]name[/db] と [db]email[/db] が抜き出されるのですが、 この [db] [/db] を無しで name と email だけを抜き出すにはどう書けばよいでしょうか。 ご教示のほどよろしくお願いします。
- 422 名前:nobodyさん mailto:sage [2008/12/19(金) 23:58:55 ID:???]
- \](.*?)\[\/
- 423 名前:nobodyさん mailto:sage [2008/12/20(土) 00:04:41 ID:???]
- >>422
ありがとうございます! このご恩忘れません。
- 424 名前:nobodyさん mailto:sage [2008/12/20(土) 14:46:40 ID:???]
- もう忘れてるだろw
- 425 名前:nobodyさん [2008/12/22(月) 00:30:52 ID:EdTiga+3]
- Jeditで
【あいう】を【6あいう】 【かき】を【4かき】 のように【 】でははさまれた文字列の頭に文字数×2の数値を追加したいのですが どのように検索してどのように置換すればよいでしょうか? 【 】ではさまれた文字数はまちまちです。 よろしくお願いします。
- 426 名前:nobodyさん mailto:sage [2008/12/22(月) 03:02:21 ID:???]
- >>425
無理だろ。 マッチした部分の長さを得る手段がない。
- 427 名前:425 mailto:sage [2008/12/22(月) 15:22:20 ID:???]
- orz
- 428 名前:nobodyさん mailto:sage [2008/12/22(月) 15:42:49 ID:???]
- マクロ組み合わせれば
- 429 名前:425 mailto:sage [2008/12/22(月) 17:01:35 ID:???]
- >>427
マクロですね! ありがとうございます。
|

|