正規表現について - PHPプロ!Q&A掲示板

223

  • 0P

正規表現について

質問日時 / 2006年11月7日 02:26    回答数 / 2件

Questioner:  tadao  このエントリーをはてなブックマークに追加 

キーワード / 正規表現   

正規表現について質問があります。
以下のようにカッコに閉じられた文字列を表示させるようなプログラムを考えています。
<?php
$str = "$(base/usr/address)";
if(preg_match("正規表現の部分",$str)){
    print($str);
}
?>
出力したい結果:
base/usr/address
このようにカッコに閉じられた部分を表示できるようにするにはどのような正規表現にすればよいでしょうか?よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01eduteこんにちは $strの中に入ってくる値が、どのような
 ┗A01-1tadaoご回答ありがとうございました。 なんとか解決でき

回答一覧

並び替え:

A01 満足
answereredute [11月7日 13:12]

こんにちは

$strの中に入ってくる値が、どのような書式で入ってくるのかというのが正確にはわかりませんが、仮に
「$で始まり、直後になんらかの値が括弧で括られて終わる」
「なんらかの値は1文字以上の英数字が必ず入っている」
というのを前提にさせていただきます。
---------------
$str = "$(base/usr/address)";
if (preg_match('/^\$\((.+)\)$/', $str, $tmp)) { 
  print $tmp[1]; 
}
---------------
上記のコードで取得できました。

正規表現の箇所で
■$で始まる
「^\$」 →$はメタ文字なので直前に\をつけます。
■括弧で括られた任意の文字
「\((.+)\)」 →括弧()自体もメタ文字なので、直前に\を。
任意の数の文字は「.+」で、これを後で取得したいので()で囲みます。
英数字に限定してるので、「[0-9a-zA-Z]+」とかでもいいかも知れませんが
■…で、終わる
「$」 →終わりを示す$を。
---------------
あとは正規表現で引っかかった()で囲った部分が、preg_match関数の3番目の引数$tmpに配列として格納されますので、その[1]に値が入ってますので、それをprintしてあります。
これを他の事に使うなりなんなり。

参考になれば、と思います。
 
一応動作確認してますが、検証甘かったり違っていたらすいません。

この意見に回答する

ツリーへ TOPへ

A01-1
replyertadao [11月9日 02:39]

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

なんとか解決できました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)