cro*_*ocr 3 php regex preg-match-all
我正在使用 PHP,我有这样的文字:
first [abc] middle [xyz] last
Run Code Online (Sandbox Code Playgroud)
我需要了解括号内外的内容。在 StackOverflow 中搜索,我找到了一个模式来获取里面的内容:
preg_match_all('/\[.*?\]/', $m, $s)
Run Code Online (Sandbox Code Playgroud)
现在我想知道获取外部内容的模式。
问候!
您可以将preg_split其用作:
$input ='first [abc] middle [xyz] last';
$arr = preg_split('/\[.*?\]/',$input);
print_r($arr);
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[0] => first
[1] => middle
[2] => last
)
Run Code Online (Sandbox Code Playgroud)
这允许输出中有一些周围的空间。如果你不想要它们,你可以使用:
$arr = preg_split('/\s*\[.*?\]\s*/',$input);
Run Code Online (Sandbox Code Playgroud)
preg_split根据模式拆分字符串。此处的模式[后跟任何后跟]. 匹配任何东西的正则表达式是.*. 也[和]是用于焦炭类正则表达式的元字符。由于我们想从字面上匹配它们,因此我们需要对它们进行转义以获取\[.*\]. .*默认情况下是贪婪的,并会尝试尽可能多地匹配。在这种情况下,它将匹配abc] middle [xyz. 为了避免这种情况,我们通过?给它附加一个to give 来使它变得不贪婪\[.*?\]。因为我们在这里定义的任何东西实际上意味着除了]我们也可以使用的任何东西\[[^]]*?\]
编辑:
如果要提取 内外的单词,[]可以使用:
$arr = preg_split('/\[|\]/',$input);
Run Code Online (Sandbox Code Playgroud)
将字符串拆分为 a[或 a]