你得read the manual幾百次,它最終會來找你。
否則,你要抓住什麼可以表示爲「尋找‘JAC’後跟0或多個字母*,並確保它不是由一個字母開頭」它給你:/(?<!\\w)(jac\\w*)/i
這裏的與preg_match_all()
一個例子,讓你可以捕捉所有的模式的出現次數,不只是第一:
$q = "/(?<!\\w)(jac\\w*)/i";
$str = "I bought a jacket yesterday.
Jack is going home.
I want to go to Jacksonville.";
preg_match_all($q,$str,$matches);
print_r($matches[1]);
- 注:由「信」我的意思是任何「單詞字符」。它正式包含數字和其他「單詞字符」。根據確切的情況,一個可能更喜歡\ W(字字符)或\ B(字邊界)
您可以通過使用一個character class包括額外的字符。例如,爲了匹配任何單詞字符以及單引號,您可以使用[\w']
和你的正則表達式變成:
$q = "/(?<!\\w)(jac[\\w']*)/i";
或者,你可以添加一個可選's
到您現有的模式,讓你捕捉「江淮」後跟任意數量的單詞字符隨後任選地「的」
$q = "/(?<!\\w)(jac\\w*(?:'s)?)/i";
這裏,括號內的?:
意味着你實際上並不需要捕捉的內容(因爲他們已經內一對括號,這是沒有必要的),並在?
之後括號表示匹配是可選的。
顯示您現有的代碼:-) – Erik 2010-12-03 03:41:11
特別是你試圖使用的正則表達式! – GWW 2010-12-03 03:43:12