【问题标题】:Preg_split & Regex - Removing brackets, text and colonsPreg_split & Regex - 删除括号、文本和冒号
【发布时间】:2015-09-11 09:00:14
【问题描述】:

我试图了解如何使用正则表达式和 preg_split 拆分字符串,但我似乎无法理解在线解释。 特别是括号的选择器似乎无法创建。

我正在尝试进行 2 种不同的拆分。以下示例:

  1. "[group:text]" -> "text"
  2. "icon_type:[search]:[asterisk]" -> array of 3 variables: [0]->"icon_type" [1]->"search" [2]->"asterisk"

这两个正则表达式是什么?

我尝试了以下示例 1:/\[(group:)\]/,遗憾的是这并没有删除任何内容。

【问题讨论】:

  • 我怀疑你会得到一些反对票,除非你提供一个你尝试过的例子。另外,您能否澄清一下您是否想在一个正则表达式中执行两个匹配?还是您在寻找两个独立的正则表达式?
  • 已删除重复问题
  • 这看起来像是正常的正则表达式匹配,而不是拆分。
  • 您能否向我解释一下我需要做什么,以删除符号 + 文本并获得我想要的输出?
  • @Abayob 不,我不使用 PHP。

标签: php regex preg-split


【解决方案1】:

使用匹配比拆分更容易。使用preg_match_all 使用这个正则表达式:

\b\w+(?=[:\]](?![^\]\[]*\]))

RegEx Demo

代码:

$re = '/\b\w+(?=[:\]](?![^\]\[]*\]))/'; 
$str = "[group:text]\nicon_type:[search]:[asterisk]"; 

preg_match_all($re, $str, $matches);

print_r($matches);

此正则表达式匹配使用\w+ 的单词,该单词必须后跟: 或],使用正向前瞻断言(?=[:\]]),但它后面也不能跟0 个或多个非[] 字符和@ 987654330@ 使用负前瞻断言(?![^\]\[]*\])。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2018-05-02
    相关资源
    最近更新 更多