preg_matchによるマッチング - PHPプロ!Q&A掲示板

228

  • 0P

preg_matchによるマッチング

質問日時 / 2006年11月9日 02:55    回答数 / 10件

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

キーワード / preg_match    正規表現   

preg_matchについて質問です。

$text = "aaaaa$bbbbb$ccccc(ddddd)";

if( preg_match( '/[^$()]*/', $text, $tmp) ){ {
   print($tmp[1]);
}

このプログラムで出力結果を
aaaaabbbbbcccccddddd
という形にしたいのですが、上の正規表現だと
aaaaa
になってしまいます。
「$,(,)」の3つを取り除くにはどういった正規表現でマッチングさせればよいでしょうか??

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



ツリー一覧

┣A01lowolこんな感じでしょうか。 <?php $text = 'aaaaa$bb
┃┗A01-1tadao返事遅れてすいません。解決しました。 ありがとうご
┣A02shizk正規表現は'/[^$()]*/'ではなく、'/[^\$()]*/'ですね
┃┗A02-1tadao返事が遅れました。 解決できました。ありがとうござ
┣A03bobchin取り除くなら「preg_replace」はどうでしょうか?
┃┗A03-1tadaoこの方法を試したところうまくいきました。 ご指摘あ
┣A04lowol>>shizkさん >$はメタ文字なのでエスケープ(\を直前
┃┗A04-1tadao調べてみたところ確かにそうでした。 細かい指摘をし
┗A05shizk> []のなかではエスケープいらないのではないでしょう
 ┗A05-1tadaoこっちも勉強になりました。 ありがとうございます。

回答一覧

並び替え:

A01 満足
answererlowol [11月9日 03:15]

こんな感じでしょうか。

<?php
$text = 'aaaaa$bbbbb$ccccc(ddddd)'; //シングルクォートで。
if(preg_match_all("/[^$()]+/", $text, $tmp)){ //preg_match_allで。
echo join("", $tmp[0]); 
}
?>

ちなみにpreg_matchについての注意。
http://www.phppro.jp/phpmanual/php/function.preg-match.html

preg_match() は、pattern がマッチした回数を返します。つまり、0 回(マッチせず)または 1 回となります。 これは、最初にマッチした時点でpreg_match() は検索を止めるためです。

この意見に回答する

ツリーへ TOPへ

A01-1
replyertadao [11月22日 18:30]

返事遅れてすいません。解決しました。
ありがとうございました。

この意見に回答する

ツリーへ TOPへ

A02 満足
answerershizk [11月9日 04:06]

正規表現は'/[^$()]*/'ではなく、'/[^\$()]*/'ですね。
$はメタ文字なのでエスケープ(\を直前に付ける)が必要です。

この意見に回答する

ツリーへ TOPへ

A02-1
replyertadao [11月22日 18:31]

返事が遅れました。
解決できました。ありがとうございます。

この意見に回答する

ツリーへ TOPへ

A03 満足
answererbobchin [11月9日 09:20]

取り除くなら「preg_replace」はどうでしょうか?

$text = 'aaaaa$bbbbb$ccccc(ddddd)';
print preg_replace('/[$()]/', '', $text);

この意見に回答する

ツリーへ TOPへ

A03-1
replyertadao [11月22日 18:33]

この方法を試したところうまくいきました。
ご指摘ありがとうございます。

この意見に回答する

ツリーへ TOPへ

A04 満足
answererlowol [11月10日 17:08]

>>shizkさん
>$はメタ文字なのでエスケープ(\を直前に付ける)が必要です。

[]のなかではエスケープいらないのではないでしょうか?
正規表現入門関係のサイトでそんなのを見た気がします。

この意見に回答する

ツリーへ TOPへ

A04-1
replyertadao [11月22日 18:34]

調べてみたところ確かにそうでした。
細かい指摘をしていただいてありがとうございます。

この意見に回答する

ツリーへ TOPへ

A05
answerershizk [11月10日 17:47]

> []のなかではエスケープいらないのではないでしょうか?

そうみたいですね、そのままで動きました(^^;
ちょっと勉強になりました、ありがとうございます。

この意見に回答する

ツリーへ TOPへ

A05-1
replyertadao [11月22日 18:32]

こっちも勉強になりました。
ありがとうございます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

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