我正在使用 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/