php - 如何获取正则表达式匹配在字符串中的位置?

标签 php regex string

<分区>

我知道如何使用 preg_match 和 preg_match_all 在给定字符串中查找正则表达式模式的实际匹配项,但我正在编写的函数不仅需要匹配项的文本,而且能够遍历字符串匹配...

因此,我需要根据正则表达式模式知道匹配项在字符串中的位置。

我似乎找不到类似于 strpos() 的函数来允许正则表达式……有什么想法吗?

最佳答案

您可以使用标志PREG_OFFSET_CAPTURE为此:

preg_match('/bar/', 'Foobar', $matches, PREG_OFFSET_CAPTURE);
var_export($matches);

结果是:

array (
  0 => 
  array (
    0 => 'bar',
    1 => 3,     // <-- the string offset of the match
  ),
)

在以前的版本中,此答案在正则表达式中包含一个捕获组(preg_match('/(bar)/', ...))。从前几条评论中可以明显看出,这让一些人感到困惑,后来被@Mikkel 编辑掉了。请忽略这些评论。

关于php - 如何获取正则表达式匹配在字符串中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571231/

相关文章:

Java 正则表达式与括号匹配

string - 如何从 Swift 中的句子中获取第一个单词

java - java中的正则表达式

php - 窗体上的模态窗口

php - MYSQL 到 sqlsrv

php - 使用 PHP 在两个页面之间传递变量的最安全方式

regex - Jsoup、正则表达式、XPath 从 HTML 提取内容的性能比较?

Java 允许大小写

c - 将数字附加到 LPCTSTR

php - 如何在 foreach 循环/if 语句中保留变量值