PHPの正規表現について質問です。

()でくくられたものを抽出する正規表現として、
'/((.+?))/'というパターンを作成したのですが、
これだと1行に2つ()があった場合、後ろの方が選択されてしまいしまいます。
これを最初にマッチした方を選択させるにはどうしたら良いのでしょうか?
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/09/12 23:46:33
  • 終了:2008/09/13 02:49:18

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012008/09/13 00:17:11

ポイント35pt

2つある場合というのを下記のように捉えて実験してみましたがいかがでしょう。

<?php
$s = 'abc(de)fg(hi)jk';
echo "$s\n";
preg_match("/\(.+?\)/",$s,$m);
print_r($m);
preg_match_all("/\(.+?\)/",$s,$m);
print_r($m);
?>

出力結果

abc(de)fg(hi)jk
Array
(
    [0] => (de)
)
Array
(
    [0] => Array
        (
            [0] => (de)
            [1] => (hi)
        )

)

PHP: preg_match - Manual

id:taroemon

ご回答ありがとうございます。

質問文に書かれてないところで勘違いがあったようです。

この件はあらためて質問し直します。

ぜひまた教えてください。

2008/09/13 02:49:09
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402008/09/13 00:25:11

ポイント35pt
'/^[^(]*((.+?))/'

PHP: mb_ereg - Manual

id:taroemon

ご回答ありがとうございます。

質問文に書かれてないところで勘違いがあったようです。

この件はあらためて質問し直します。

ぜひまた教えてください。

2008/09/13 02:49:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません