嗨我想匹配一個搜索字符串,以便如果有我們的郵編是在字符串的開頭,返回郵政編碼以及其餘的字符串。這是我到目前爲止正則表達式noob需要一個模式來匹配特定的字符串模式
$str = "90210 Beverly Hills, CA";
$res = preg_match('/^((\d{5})(-\d{4})?)\s+(.+?)$/', $str, $matches);
但是,當我print_r匹配它返回一個額外的關鍵空間。
Array
(
[0] => 90210 Beverly Hills, CA
[1] => 90210
[2] => 90210
[3] =>
[4] => Beverly Hills, CA
)
是否有反正我可以改善模式並返回不是空字符串的匹配?這個實例有更好的模式嗎?此外,如果只給出一個郵政編碼或只是一個文本字符串,它將返回false。
嗯,我正在尋找一種模式,所以如果在字符串的開始處有一個郵政編碼並且其後面是文本,則將郵政編碼和文本作爲匹配返回。如果它不符合這些條件(例如,只是「90210」或只是「比佛利山莊,加利福尼亞州」或「貝弗利山莊,加利福尼亞州90210」)它將返回沒有匹配 – kwakhed 2012-04-26 04:57:31
哦..你的原始表達看起來很好,只需使用' 0]',這是整個比賽。如果你不想捕獲一個子模式,使用'?:',但是沒有什麼區別,因爲第0次匹配應該總是你想要的(好吧'':'會更快,但是很少,所以你贏了沒有通知,除非你正在檢查數以百萬計的郵政編碼) – 2012-04-26 05:07:48
非常感謝你! – kwakhed 2012-04-26 05:13:31