与 preg_match_all 匹配

2024-02-16

我得到这个正则表达式:

$val = "(123)(4)(56)";
$regex = "^(\((.*?)\))+$";
preg_match_all("/{$regex}/", $val, $matches);

谁能告诉我为什么这只匹配最后一个数字(56)而不是每组数字?

这是上面的正则表达式运行后 $matches 包含的内容:

array
  0 => 
    array
      0 => string '(123)(4)(56)' (length=12)
  1 => 
    array
      0 => string '(56)' (length=4)
  2 => 
    array
      0 => string '56' (length=2)

因为@develroot已经回答了你想要使用的方式preg_match_all不起作用,它只会返回最后一个匹配的组,而不是该组的所有捕获。这就是正则表达式的工作原理。目前我不知道如何在 PHP 中获取所有组的内容,我认为这是不可能的。可能不对,也可能会改变。

但是,您可以针对您的情况解决这个问题,首先检查整个字符串是否与您的(重复)模式匹配,然后按该模式提取匹配项。将所有内容都放在一个函数中,并且很容易访问(Demo http://codepad.viper-7.com/hYxVXw):

$tests = explode(',', '(123)(4)(56),(56),56');   

$result = array_map('extract_numbers', $tests);

print_r(array_combine($tests, $result));

function extract_numbers($subject) {
    $number = '\((.*?)\)';
    $pattern = "~^({$number})+$~";
    if (!preg_match($pattern, $subject)) return array();
    $pattern = "~{$number}~";
    $r = preg_match_all($pattern, $subject, $matches);
    return $matches[1];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 preg_match_all 匹配 的相关文章

  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将
  • 如何确定当前使用哪个网格选项

    我将 Bootstrap 3 用于使用 PHP 和 HTML 创建的网页 随着响应式网格和类的开启引导程序3您可以将多个类分配给一个 div 以根据当前屏幕尺寸定义不同的宽度 例如 div class col lg 3 col md 3 c
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 在 Laravel 中动态设置数据库连接和语言

    我有 3 个域指向同一个Laravel应用 我想要的是每个人都连接到自己的数据库并根据 TLD 加载自己的语言文件 我可以在哪个文件中设置这些设置 我可以直接在配置文件中执行此操作 或者可以在加载配置之前执行某些事件 我拥有的是一个简短的函
  • 正则表达式最多匹配五个单词

    我有一个正则表达式 a zA Z 0 9 1 5 它验证该单词包含字母数字字符和少数特殊字符 并且长度不应超过5人物 如何使此正则表达式接受最多五个与上述正则表达式匹配的单词 a zA Z 0 9 1 5 s a zA Z 0 9 1 5
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • 选取散列第 N 个元素的最快方法

    我有一个大哈希表 带有字符串索引的数组 并正在寻找一个函数quickly从中选取第一个 理想情况下也是第 N 个 元素 array shift and reset 对于我的需求来说太慢了 UPDATE 我也不是在寻找基于引用的解决方案 该函
  • Windows iis 7.0 上的 APC 不稳定

    我的 IIS 非常不稳定 因为它总是由于某种与 APC 相关的原因而重新启动 服务器的规格如下 Intel R Xeon CPU 3GHZ 3GHZ 2GB RAM 64bit APC 和服务器规格 3 1 7 dev PHP Versio
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • phpinfo 说 php.ini 路径是 C:\Windows 但那里没有 php.ini

    我们正在尝试从 PHP5 切换到 PHP7 现在我们已经安装了 Apache 并且 PHP 可以运行了 然而 我们在php ini文件没有任何作用 Via phpinfo 我们意识到原因是Configuration File php ini
  • PHP:在脚本完成之前获取输出

    我有一个名为 data php 的脚本 如下所示 do some stuff echo result do some other stuff eg database operations 我需要在另一个脚本中使用 data php 的输出
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover
  • magento成功页面变量

    我正在尝试捕获一些 magento 成功页面变量以传递给我们的广告公司 到目前为止 我已经得到了这个 但变量没有输出任何内容 数据需要采用以下格式 price1 price2 price3 qty1 qty2 qty3 sku1 sku2
  • netsh 结果到 PowerShell 对象

    我正在尝试与NETSH https ss64 com nt netsh html来自 PowerShell 我想看到这个命令的结果 例如一个对象 但是netsh返回一个字符串 netsh wlan show hostednetwork Ge
  • 如何确保在 PHP 的“foreach”循环中重置该值?

    我正在写一个简单的 PHP 页面和一些foreach使用了循环 以下是脚本 arrs array a b c foreach arrs as arr if substr arr 0 1 b echo This is b End of fir
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28

随机推荐

  • SwiftUI - 更改 ForEach 中的结构数据集?

    我是编程和 SwiftUI 的新手 我正在制作这个应用程序 用户可以选择这些标记为 A D 的按钮 他们可能会选择超过 1 个 我希望当他们单击按钮时 背景颜色会从灰色变为绿色 但是 如果我将底部代码中的 Here 替换为 Data Sel
  • 如何以编程方式检查 Windows 是否是最新的?

    我正在使用 Windows 窗体在 C 中构建一个应用程序 该应用程序必须检测防病毒和反间谍软件是否已安装 更新和启用 我已经使用 WMI Net 完成了此操作 但我找不到检查 Windows 7 是否最新的方法 日期 你知道这是否可以通过
  • 我可以在不安装 R 的情况下使用 R.Net

    我正在 C 中构建一个应用程序 并且我想在该应用程序中使用一些 R 库 我正在使用 R Net 来做到这一点 但是 我会将这个软件部署给那些计算机上可能没有下载 R 的用户 有什么方法可以使用 R dll 以便用户可以运行我的应用程序 而无
  • 移动一个精灵时所有精灵都不可见[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的场景中有 7 个精灵 所有精灵都添加到可变数组中 当我触摸一个精灵来移动时 其他精灵在我触摸移动方法后不可见 这是我的代码 if se
  • GMP mpz_array_init 是一个过时的函数 - 我们应该如何初始化 mpz 数组?

    只使用了GNU MP Bignum 库 https gmplib org index html dir有几次 我很感兴趣地发现我以前分配 启动数组的方式现在已经过时了 从整数特殊函数 https gmplib org manual Inte
  • Rails 3.1:有深度嵌套模型的教程吗?

    我正在寻找 Rails 3 1 的工作教程 该教程将逐步向您展示如何创建 3 层深度的嵌套模型 The 复杂形式 截屏视频 http railscasts com episodes 73 complex forms part 1在 Rail
  • AndroidAnnotations + Android Studio - 找不到生成的 null.R 类

    我已经使用最新版本的 AndroidStudio 按照 wiki 说明设置了 ActiveAndroid 我正在使用产品口味 这是我的 gradle 构建文件 apply plugin android apply plugin androi
  • 为什么 IE10 中的“font-size: 1em”比 Chrome 中的字体大?

    我目前正在开发一个网站 我不明白为什么文本在 IE10 中显示比在 Chrome 中更大 我已确保两个浏览器都设置为 100 缩放 不多也不少 我的 CSS 已重置 body font size 1em 在 Chrome v27 0 145
  • 如何使用 ggplot2 在同一绘图区域内绘制绘图的缩放?

    这个问题看起来很难理解 但是为了说明一下 我举个图来举例 我正在尝试复制这张图 到目前为止 我已经单独完成了图形 但我不知道如何将它们组合在一起 如示例所示 有什么帮助吗 time lt seq from 0 to 10 by 0 5 li
  • 文件夹被锁定,无法解锁

    当我尝试更新或提交项目中的代码时 它告诉我该文件夹已锁定 当我尝试 释放锁定 时 它说该工作空间中没有任何内容可以解锁 这意味着什么 为什么我无法更新 提交甚至清理项目 右键单击您的 Subversion 工作目录文件夹 然后选择Torto
  • 在 Macos 上,rails new 失败并显示“无法设置其他经过身份验证的数据”

    我正在尝试让 ruby on Rails 在带有 M1 芯片的新 Mac 上运行 跑步rails new之后失败append gitignore出现以下错误 Library Ruby Gems 2 6 0 gems activesuppor
  • VS2010 程序集加载错误

    当我尝试在 Visual Studio 2010 中构建 ASP NET 4 项目时 出现以下错误 无法加载文件或程序集 file C Dev project trunk bin Elmah dll 或其依赖项之一 不支持操作 HRESUL
  • 如何将容器作为服务的参数

    在我的服务构造函数中 public function construct EntityManager entityManager SecurityContextInterface securityContext this gt securi
  • Tastypie 和原始 sql

    如何让 Tastypie 获取原始 SQL 查询集 queryset Foo objects raw sql 似乎不起作用 难道不可能吗 queryset super class name self get query set return
  • runnodes 时发生非法反射访问操作

    我正在尝试运行我的 corda 节点 但我遇到了一个奇怪的问题 节点正在正确启动 正如您在日志中看到的那样 C Repositorio cordapp template kotlin build nodes gt runnodes log
  • 如何在 Python (2.7 + ) 中等待 ENTER 键按下? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道一种简单的方法来等待用户按下特定的键 例如 Enter 或 Escape 但不是两者 然后在感应到按键后进一步执行代码 Try r
  • 如何在 Laravel 项目中添加 jQuery

    我是 Laravel 框架的新手 我想在使用 Laravel 框架构建的 Web 应用程序中使用 jQuery 但不知道怎么链接jQuery 库在 Laravel 项目中 你可以使用在线图书馆
  • 在数据框的列上进行 Strsplit [重复]

    这个问题在这里已经有答案了 我有一个data frame其中变量之一是向量 或列表 如下所示 MyColumn lt c A B C D E F G MyDF lt data frame group id 1 4 val 11 14 cat
  • 如何使用正则表达式搜索带括号的字符串?

    我有一个 txt 文件 其中包含以下字符串 A 123 B 456 Ab 123 我想搜索Ab 123 在txt文件中 我尝试过的 re search r Ab 123 string 有 12 个具有特殊含义的字符 您可以使用以下命令转义到
  • 与 preg_match_all 匹配

    我得到这个正则表达式 val 123 4 56 regex preg match all regex val matches 谁能告诉我为什么这只匹配最后一个数字 56 而不是每组数字 这是上面的正则表达式运行后 matches 包含的内容