2012-12-27 69 views
4

的首次和最後出現之間的一切,我有以下代碼:正則表達式匹配的兩個不同的字符

$str_val = "L(ine 1(
    L(ine 2) 
    Line 3 
    Line 4)"; 
$regex = '/\(([^\)]*?)\)/i'; 
preg_match($regex, $str_val, $matches_arr); 
print_r($matches_arr); 

此代碼匹配的第一個(和第一)之間的一切。

我正在尋找我要放在$regex之內的東西,它會匹配第一個(和最後一個)之間的所有內容。

我很感謝您的幫助。

在此先感謝。

回答

2

您可以使用此: -

'/\((.*)\)/s' 

/s改性劑是用來使點元字符匹配一切,包括一個換行符。而且,由於.*是一個貪婪的量詞,它將匹配儘可能長的字符串。所以,它會匹配到最後的)

+0

尼斯之一。這對我有效。謝謝。 –

+0

@ChuckUgwuh。歡迎您:) –

0

試試這個正則表達式:

\([^\)]*\) 

的第一場比賽是你所需要的。

0

只是做一個貪婪搜索

$regex = '/\(.*\)/s'; 

如果你真的想擁有的一切使用之間(...)這個

$regex = '/\((.*)\)/s'; 
preg_match($regex, $str_val, $matches_arr); 
echo $matches_arr[1]; 
+0

謝謝。這也會起作用。 –