正则表达式匹配两个不同字符的第一个和最后一个出现之间的所有内容

时间:2012-12-27 18:55:57

标签: php regex

我有以下代码:

$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中的内容,它会匹配第一个(和最后一个)之间的所有内容。

我很感激你的帮助。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您可以使用: -

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

/s修饰符用于启用点元字符以匹配包括换行符在内的所有内容。并且,由于.*是一个贪婪的量词,它将匹配可能的最长字符串。因此,它将匹配到最后)

答案 1 :(得分:0)

试试这个正则表达式:

\([^\)]*\)

第一场比赛就是你所需要的。

答案 2 :(得分:0)

只是做一个贪婪的搜索

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

如果你真的希望 (...)之间的所有使用这个

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