分解除括号之外的字符串?

2023-12-07

我正在尝试通过垂直条来爆炸一根弦。这是最简单的部分。但是,我不希望分割影响括号内的子字符串。这意味着我需要一个字符串,例如:

Hello (sir|maam).|Hi there!

爆炸成:

Array
(
    [0] => Hello (sir|maam).
    [1] => Hi there!
)

通过使用普通的爆炸函数,我不相信有办法告诉它忽略括号包围的条。不过,我有一些想法。

我知道可以通过正常分解字符串,然后循环遍历数组并合并包含的字符串之间的所有内容来做到这一点(到包含的结束字符串)。然而,我有一种感觉,应该有一种更优雅的方式来实现这一点。

我对吗?考虑到这些限制,是否有一种代码密集程度较低的方法将字符串拆分为数组?


如果你能保证括号是平衡的并且永远不会嵌套(也就是说,如果永远不会出现'Oops(!' or a '(nested stuff (like this)|oops)'),并且永远不会有||在您希望将其匹配为空字符串的括号之外,那么这应该会有所帮助:

preg_match_all('/(?:[^(|]|\([^)]*\))+/', $your_string, $matches);
$parts = $matches[0];

它将匹配 [任一(不是一个字符| or (), or a ( and )包含任何不是)(包括|)],尽可能多次(但至少一次)。简短版本:它会让|括号之间是匹配的部分,而不是分隔符。

另一种可能性稍微不那么神秘:

$parts = preg_split('/\|(?![^(]*\))/', $your_string);

使用前瞻断言来取消任何|接下来是)如果没有(之间。对于括号仍然有点不宽容,但它会匹配两个之间的空字符串|s.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分解除括号之外的字符串? 的相关文章

  • 如何从 Laravel 中的表中选择所有列名称?

    我试图从表中获取所有列名Teller 功能 public function getTableColumns tables return DB select DB raw SELECT COLUMN NAME DATA TYPE COLUMN
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito

随机推荐

  • Java 中引用变量读写的原子性

    首先引用来自 从JLS 8 秒 17 7 写入和读取引用始终是原子的 无论 它们是作为 32 位值还是 64 位值实现的 这是让我感到困惑的场景 给定 Employee 类和该类中名为calculate 的方法 该方法返回对 Employe
  • iOS 使用情况因 iPhone 尺寸不同而存在差异

    我有一个按钮 我希望根据所使用的 iPhone 类型具有不同的宽度 显然 7 Plus 的宽度更大 而 7 Plus 的宽度则更小 我单击按钮 单击 特征变化 选择 高度 更改每个 iPhone 的约束 然后单击 完成变化并构建 但它始终保
  • 从应用程序引擎访问计算引擎

    我有一个在计算引擎上运行的实例 它使用 Torch 来预测图像中的对象 我想制作一个简单的 Web 界面 用户可以使用该界面上传图像 将图像发送到服务器 计算引擎 预测对象并将列表返回给用户 在我的计算引擎 Ubuntu 14 04 中 这
  • 如何使用 distHaversine 函数?

    我试图在循环内使用 R 中的 distHavrsine 函数来计算数百行的某些纬度和经度坐标之间的距离 在我的循环中我有这样的代码 if distHaversine c file i long file i lat c file j lon
  • 如何用 C 语言制作自己的头文件?

    我尝试制作自己的头文件 但它不起作用vim says wget h 2 2 error invalid preprocessing directive ifndef WGET H wget h 3 2 error invalid prepr
  • 列出并连接到蓝牙设备

    我正在尝试让我的 Windows 平板电脑应用程序通过蓝牙与其他设备进行通信 首先我想扫描设备 然后我想连接到所选设备 我制作了一个简单的测试应用程序 空白首页并向其添加了一个按钮和一个列表框 然后我尝试了以下代码 我在其他地方找到了这样的
  • 如何删除HTTP响应头?

    我遇到一种情况 其中一个响应标头Content Disposition必须被删除 所以我想到编写一个servlet过滤器来做到这一点 但我意识到HttpServletResponse只有一个setHeader 方法 但没有方法删除它 我怎样
  • Django REST Framework 不以 PUT 形式显示值

    昨天我发了一个question并找到了解决该问题的方法 然而 该解决方案引发了另一个问题 请看一下问题 这样我就不必重复内容了 在可浏览 API 中 class name 的值不会显示在 PUT 表单中 呈现的 HTML 看起来像这样 di
  • 在oracle plsql中使用触发器填充代理键的优点

    我正在开发一个代码库 它具有以下类型的模式来生成表的代理键 create or replace TRIGGER TEST TRIG BEFORE INSERT OR UPDATE ON my table REFERENCING NEW AS
  • 更改 JavaFX 8 DatePicker 中的语言

    将 DatePicker 添加到我的应用程序时 我得到以下信息 我认为这是因为我在计算机上使用希伯来语 如何将 DatePicker 的语言更改为英语 您可以为 Java 虚拟机调用实例定义默认区域设置 Locale setDefault
  • 找到字符串中最长的单词

    目前正在尝试找出如何找到字符串中最长的单词 我的研究已经让我有所收获 我在 SO 上找到了一个代码 它显示了最长单词中的字母数量 Example function longest str var words str split var lo
  • FileUtils.mv 抛出 Invalid char \302 和 \255 异常

    当我运行下面的代码时CodeRunner或者从命令行我收到以下错误 Untitled rb 25 Invalid char 302 in expression Untitled rb 25 Invalid char 255 in expre
  • 从母版页调用部分视图时出现 ASP.NET MVC 堆栈溢出异常

    当我尝试从主控调用部分视图时 出现堆栈溢出错误 部分视图
  • Android 上的 OMA DRM v1 和 v2 支持

    Are OMA DRMAndroid 支持 v1 和 v2 吗 如果没有 有计划吗 是否有任何第三方库可以实现 OMA DRAM v1 和 v2 简短的回答是它不存在 但看起来有 3rd party 库 From 邮件列表 仅支持前向锁定
  • 片段单元测试:launchFragment 抛出 ClassCastException

    我试图在单元测试中调用 Fragment 类中的方法 但我不断收到错误java lang ClassCastException androidx fragment app testing FragmentScenario EmptyFrag
  • 我如何知道函数的参数数量?

    我们如何知道一个函数有多少个参数 例如 对于给定的函数f 我想做 if arg number f 0 f else if arg number f 1 f FALSE nargs 将检查函数内参数的数量 函数的参数数量 Edit forma
  • 使用 JNI 将 float* 转换为 jfloatArray

    我在 C 函数中获得了一个 float 我需要将其转换为 jfloatArray 以返回到我的 Java 代码 如何将 float 转换为 jfloatArray Thanks 要将 float 转换为 jfloatArray 可以使用 N
  • 如何将文件夹添加到 java 构建路径作为库,其中包含多个 jar 或条目?

    首先 我想说非常感谢 Rich seller 解决了我以编程方式更改 eclipse java 构建路径中的条目顺序的查询 我想将我的 Library 文件夹添加到 java 构建路径 其中有几个 jar 它的行为应该像类路径容器 我尝试使
  • 将 ISO 格式的日期转换为 DATETIME

    我正在使用 SQL Server Management Studio 编写 SQL 查询 并且有一些 ISO 日期格式的 NVARCHAR 类型值 例如 20130302T164800 我需要将它们转换为 DATETIME 我尝试过Conv
  • 分解除括号之外的字符串?

    我正在尝试通过垂直条来爆炸一根弦 这是最简单的部分 但是 我不希望分割影响括号内的子字符串 这意味着我需要一个字符串 例如 Hello sir maam Hi there 爆炸成 Array 0 gt Hello sir maam 1 gt