php - 正则表达式 : get what is outside of the brackets

标签 php regex preg-match-all

我正在使用 PHP,我有这样的文字:

first [abc] middle [xyz] last

我需要了解括号内外的内容。在 StackOverflow 中搜索我找到了一个模式来获取里面的内容:
preg_match_all('/\[.*?\]/', $m, $s)

现在我想知道获取外部内容的模式。

问候!

最佳答案

您可以使用 preg_split 为此:

$input ='first [abc] middle [xyz] last';
$arr = preg_split('/\[.*?\]/',$input);
print_r($arr);

输出:
Array
(
    [0] => first 
    [1] =>  middle 
    [2] =>  last
)

这允许输出中有一些周围的空间。如果你不想要它们,你可以使用:
$arr = preg_split('/\s*\[.*?\]\s*/',$input);
preg_split根据模式拆分字符串。这里的模式是[后跟任何内容 ] .匹配任何东西的正则表达式是 .* .还有[]是用于 char 类的正则表达式元字符。因为我们想从字面上匹配它们,所以我们需要对它们进行转义以获得 \[.*\] . .*默认情况下是贪婪的,并会尝试尽可能多地匹配。在这种情况下,它将匹配 abc] middle [xyz .为了避免这种情况,我们通过在它后面附加一个 ? 来使它变得不贪婪。给 \[.*?\] .由于我们对这里的任何定义实际上意味着除 ] 之外的任何其他内容。我们也可以使用 \[[^]]*?\]
编辑:

如果要提取[]内外的词, 您可以使用:
$arr = preg_split('/\[|\]/',$input);

[ 上拆分字符串或 ]

关于php - 正则表达式 : get what is outside of the brackets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721173/

相关文章:

java - 用于替换空 JSON 条目的正则表达式

php - PHP 中可选字符的正则表达式匹配

php - 如何使用正则表达式 PHP 查找字符串中的数字

php - 自动加载和命名空间 php

php - 替换 [something]KeepThisPart 的正则表达式

c++ - 用于 URL 验证的正则表达式

c# - .NET 正则表达式 - 如何查找具有特殊字符的术语 "surrounded"

当有日期和时间时,td 中的 php 正则表达式

php - 使用 PHP ping 数千个网站的最快方法

php - Apache 使用旧的 PHP 版本