正则表达式获取字符串的一部分

时间:2011-12-14 12:53:00

标签: php regex

如何只获取“()”中的文字 例如,从“(en)English”我只想要“en”。 我写了这个模式"/\(.[a-z]+\)/i",但它也得到了“()”;

提前致谢。

5 个答案:

答案 0 :(得分:2)

<?php

$string = '(en) English';

preg_match('#\((.*?)\)#is', $string, $matches);

echo $matches[1]; # en

?>

$matches[0]将包含完整匹配字符串,$matches[1]将首先分组,在这种情况下(.*?)位于()之间。

答案 1 :(得分:1)

你的正则表达式中的点是什么有用的,我认为它是错误的。

其次是给你一个替代捕获组的答案(这非常好!),这里是使用lookbehind和lookahead进行解决。

(?<=\()[a-z]+(?=\))

here on Regexr

这里的诀窍是,那些外观与里面的人物不匹配,他们只是检查它们是否在那里。所以这些字符不包含在结果中。

(?<=\()积极看待断言,在其位置之前检查字符(

(?=\)积极向前看断言,在其位置前检查角色(

答案 2 :(得分:0)

那应该做的。

"/\(([a-z]+)\)/i"

答案 3 :(得分:0)

最简单的方法是获取"/\(([a-z]+)\)/i"并使用捕获组获取您想要的内容。

否则,你必须展望未来,看看背后

答案 4 :(得分:0)

您可以像其他人一样使用捕获组

OR

您只能检查匹配是否以“(”后跟“)”开头。它被称为Lookahead和lookbehind。

"/(?<=\().[a-z]+(?=\))/i"