[英]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]+(?=\))
这里的窍门是,那些环顾四周与里面的字符不匹配,它们只是检查它们是否在那里。 因此,这些字符不包括在结果中。
(?<=\\()
在断言后的正面看,检查字符(
在其位置之前
(?=\\)
积极的前瞻性断言,检查字符(
位于其位置之前
那应该做的。
"/\(([a-z]+)\)/i"
最简单的方法是获取"/\\(([az]+)\\)/i"
然后使用捕获组获取所需的内容。
否则,您必须向前看,向后看
您可以像其他所有人一样使用捕获小组
要么
您可以只在您的比赛前面是否加上“(”和“)”来进行比赛。 它叫做Lookahead和向后看。
"/(?<=\().[a-z]+(?=\))/i"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.