2011-09-17 52 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

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

相关问题