2011-09-17 33 views
3

例コード:regex preg phpで[^>]とはどういう意味ですか?

<?php 
$html = <<< html 
<p><a href="http://www.google.com" title="10">google.com</a></p> 
<p><a href="http://www.cade.com" title="11">cade.com</a></p> 
html; 

echo preg_replace('#<p><a href\="([^>]+)" title="([^>]+)">([^>]+)</a></p>#','<p>$1 - $2</p>',$html); 
?> 

それが正常に動作しますが、私は何[^>]手段を知っていただきたいと思います。私はそれを知っている

  • + = 1以上;
  • () =サブパターン;

しかし、私は知らない約^>

+0

受け入れとしてあなたを助けている答えをマークしてください、あなたはあなたの質問のいずれかのためにこれを行っていない>ではない任意の文字です。 – JohnD

答えて

1

それは>以外の文字と一致しなければならないことを意味します。また、このコードを書いて正規表現でHTMLを解析しようとした人がthe Bibleを読んでいないことを意味し、すぐにそれを後悔します。

2

^以外の任意の文字を意味し、クラスに何を除く任意の文字を意味します。

コードでは、>以外の文字に一致することを意味します。

+0

すべての文字に一致します(。+)ではありませんか? – cssnb2329

+0

いいえ、。任意の文字に一致します。 [^]は、^の前の^に続く文字をすべての文字に一致させます。 [^ aiu]はaまたはiまたはu以外の任意の文字と一致します [^ a-f]はa、b、c、d、e、f以外の任意の文字と一致します。 [^。 – itorres

1

>以外の文字を意味します。

(サイドノート:。HTMLを解析するために正規表現を使用することが通常は良い考えではありません)

+0

合意:これは、HTMLが通常の言語ではないためです(http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not)。小さな入力に対しては問題ありませんが、大規模で複雑な非標準データの場合は、壊れて泣いてしまいます。 +1 –

1

[^>]は、すべての文字が、>を含む文字の集合を意味します。

0

あなたはPHP documentation for PCRE regex syntax

まずそれを持って、あなたはlist of meta-charactersを持っています。そこでは、正規表現内の文字の意味を調べることができます。

  • は、[サインがで仕上げ、character class定義を開始します]:私たちがいることを見つけるあなたの質問に関しては

  • 文字クラスの最初の文字として^を使用すると、文字クラスが否定されます。
  • >はメタキャラクタではありません。

ので、[^>]

関連する問題