繁体   English   中英

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

[英]Regular Expression get part of string

如何只获取“()”内的文本,例如从“(en)English”中获取,我只需要“ en”。 我已经将此模式写为"/\\(.[az]+\\)/i"但它也得到了“()”;

提前致谢。

<?php

$string = '(en) English';

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

echo $matches[1]; # en

?>

$matches[0]将包含整个matchs字符串, $matches[1]将第一个分组,在这种情况下(.*?)()之间。

您的正则表达式中的点是什么,我误认为是那里。

其次,为您提供捕获组答案的替代方法(这非常好!),这是使用后向和前向进行求解的方法。

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

在Regexr上查看

这里的窍门是,那些环顾四周与里面的字符不匹配,它们只是检查它们是否在那里。 因此,这些字符不包括在结果中。

(?<=\\()在断言后的正面看,检查字符(在其位置之前

(?=\\)积极的前瞻性断言,检查字符(位于其位置之前

那应该做的。

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

最简单的方法是获取"/\\(([az]+)\\)/i"然后使用捕获组获取所需的内容。

否则,您必须向前看,向后看

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

要么

您可以只在您的比赛前面是否加上“(”和“)”来进行比赛。 它叫做Lookahead和向后看。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM