2012-10-04 76 views
0

我有一個字符串數組。PHP正則表達式解析

(102) Name3 

如何匹配以(####)開頭的字符串並輕鬆獲取該行的名稱部分。 我正在嘗試以下不工作。

if(preg_match("/(d+)/", $myArray[$i], $matches)) 
+1

你能告訴我你的完整代碼和所需的輸出? –

回答

4

你需要逃脫在期望的輸入字符串的括號:

if(preg_match("/\((\d+)\) (.+)$/", $myArray[$i], $matches)) 

這就是下面的正則表達式:

  • /開始正則表達式(這可以是任何字符,但通常是/)
  • \(該字符(
  • (開始捕獲組1
  • \d任何數字
  • +以前匹配,1次或多次
  • )端捕獲組1
  • 的空間
  • (開始捕獲組2
  • .幾乎任何字符
  • +以前的匹配,1次或多次
  • )端捕獲組2
  • $串的端
  • /正則表達式的結束(必須第一個字符匹配)

可找到關於regular-expressions.info更具描述性定義。

通過上述,匹配將包含例如:

array(
    '(123) input string', 
    123, // capturing group 1 
    'input string' // capturing group 2 
) 
+0

可以讓我知道什麼是(。+)? – blitzkriegz

+0

哇。萬分感謝! – blitzkriegz