Php 如何访问捕获组而不是完整字符串匹配?

Php 如何访问捕获组而不是完整字符串匹配?,php,preg-match,capture-group,Php,Preg Match,Capture Group,我正在使用preg_match()在文件中搜索并列出结果 在我的档案中,我有: city 1 | address 1 | phone 1 city 2 | address 2 | phone 2 city 3 | address 3 | phone 3 例如,如果我搜索地址1,它将显示整行 有没有办法只显示“地址1”?您应该使用子模式。可以使用以下括号将子模式放入正则表达式中: () 之间的所有内容都是您的子模式,若存在匹配项,则将添加到具有匹配项的数组中 比较一下: $subject =

我正在使用
preg_match()
在文件中搜索并列出结果

在我的档案中,我有:

city 1 | address 1 | phone 1
city 2 | address 2 | phone 2
city 3 | address 3 | phone 3
例如,如果我搜索
地址1
,它将显示整行


有没有办法只显示“地址1”?

您应该使用子模式。可以使用以下括号将子模式放入正则表达式中:

()
之间的所有内容都是您的子模式,若存在匹配项,则将添加到具有匹配项的数组中

比较一下:

$subject = 'thiswhatiamlookingforallday';
preg_match('/.*whatiamlookingfor.*/', $subject, $matches);
print_r($matches);
为此:

$subject = 'thiswhatiamlookingforallday';
preg_match('/.*(whatiamlookingfor).*/', $subject, $matches);
print_r($matches);

它应该给你一个提示,告诉你该怎么做。

我想你是在使用参数匹配,不是吗

如果提供了匹配项,则它将填充搜索结果。 $matches[0]将包含与完整模式匹配的文本, $matches[1]将包含与第一次捕获的文本匹配的文本 括号中的子模式,依此类推


请显示您的代码并解释其错误。您想搜索“地址1”并返回“地址1”的目的是什么?假设我在列表“地址554”中的某个位置。它们被|我搜索554时需要|来获得完整的|地址554 |@qqq123除以。你应该用任何新信息更新你的问题,而不是通过评论提供新的细节。仍然没有足够的信息提供准确/精确的答案。@qqq123您必须显示您的代码,然后我们才能适当地帮助您。在寻求有关问题的澄清和提供手册参考时,请以注释而不是答案的形式进行。这个问题缺乏提供准确答案的必要细节。