2011-09-17 93 views
3

示例代碼:正則表達式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

^,當放置在一個character class[)開始以外的任何字符意味着除非有什麼在類中的任何字符。

在您的代碼中,這意味着它將匹配除>之外的任何字符。

+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

[^>]是指一組字符,包括所有的字符,但>

相關問題