这个正则表达式模式意味着什么:'/& \ w; /'

时间:2011-02-17 13:19:32

标签: php regex

有人可以解释一下这个功能

preg_replace('/&\w;/', '', $buf)

呢?我查看了各种教程,发现它用字符串/&\w;/替换了模式''。但我无法理解模式/&\w;/。它代表什么?

同样在

preg_match_all("/(\b[\w+]+\b)/", $buf, $words)

我无法理解字符串"/(\b[\w+]+\b)/"代表什么。

请帮忙。在此先感谢:)

2 个答案:

答案 0 :(得分:11)

你的第一个表达的解释很简单,它是:

&     # Match the character “&” literally
\w    # Match a single character that is a “word character” (letters, digits, and underscores)
;     # Match the character “;” literally

第二个是:

(           # Match the regular expression below and capture its match into backreference number 1
   \b          # Assert position at a word boundary
   [\w+]       # Match a single character present in the list below
                  # A word character (letters, digits, and underscores)
                  # The character “+”
      +           # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
   \b          # Assert position at a word boundary
)

preg_replace函数使用正则表达式。正则表达式允许您以非常强大的方式在文本中查找模式。

为了能够使用preg_replacepreg_match等功能,我建议您先了解正则表达式的工作原理。

您可以在此网站上收集大量信息http://www.regular-expressions.info/

您可以使用软件工具来帮助您理解正则表达式(例如RegexBuddy

答案 1 :(得分:1)

在正则表达式中,\ w代表任何“单词”字符。即:a-z,A-Z,0-9和下划线。 \ b代表“单词边界”,即单词的开头和结尾(一系列单词字符)。

所以,/&\w;/是一个正则表达式来匹配&标志,后跟一系列单词字符,后跟一个;。例如,&foobar;将匹配,preg_replace将用空字符串替换它。

以同样的方式,/(\b[\w+]+\b)/匹配单词边界,后跟多个单词字符,后跟另一个单词边界。使用括号分别捕获单词。因此,这个正则表达式只会将字符串中的单词作为数组返回。