2010-09-03 179 views
2

如何使用的preg_match部分匹配?的preg_match部分匹配

當我有字符串:

www.stackoverflow.com 

,當我進入

stackoverflow.com or stackoverflow 

相匹配的短語返回false。我如何使它適用於部分匹配?

+0

你的問題不是很清楚(ATLEAST我)。你試圖匹配什麼?你目前使用什麼正則表達式? – codaddict 2010-09-03 05:19:26

+1

您描述它的方式可以使用'www.stackoverflow.com'作爲乾草堆和'stackoverflow.com'作爲strpos()中的針, – VolkerK 2010-09-03 05:45:04

回答

5

preg_match使用regular expressions,你可以得到一個很好的教程here

在特定情況下,你正在尋找一個字符串,然後通過一個可選段(更改搜索成英文,你想找到「計算器」,後面可以跟「.COM」)。 - 匹配「計算器」跟着一個可選的」 .COM

preg_match('/stackoverflow(\.com)?/', $your_string) 

這裏的正則表達式(/stackoverflow(\.com)?/)說同樣的事情,我們的英語版本以上:正則表達式的部分可以通過使用?修改進行optional 」。

這裏的正則表達式是如何工作的簡要概述:

  • 上的圖案兩端的斜線是PHP使用附上正則表達式delimiter
  • 在正則表達式的多數字符是從字面上匹配,所以stackoverflow匹配「計算器」
  • 括號限定group,其由?製成可選的。如果沒有這個組,只有在?之前的令牌纔會成爲可選項(在本例中爲「m」)。
  • 注意,有在「.COM」點前斜線。這是因爲dots在正則表達式(使用有點像一個通配符)的特殊字符,所以它需要進行轉義,如果你想匹配文字點。
1

preg_match默認情況下不固定,因此會發現部分匹配沒有任何特殊的努力。你有正確的順序的論點?首先是正則表達式,然後是要搜索的字符串。所以:

if (preg_match('/stackoverflow/', 'www.stackoverflow.com')) { 
    ... 
}