2017-09-20 83 views
1

我需要一個函數,它返回匹配任何東西的正則表達式和分隔符之間的所有子串。PHP - 查找兩個正則表達式之間的子串

$str = "{random_one}[SUBSTRING1] blah blah blah {random_two}[SUBSTRING2] blah blah blah{random_one}[SUBSTRING3]"; 

$resultingArray = getSubstrings($str) 

$resultingArray should result in: 
array(
    [0]: "SUBSTRING1", 
    [1]: "SUBSTRING2", 
    [2]: "SUBSTRING3" 
) 

我一直在搞亂與正則表達式沒有運氣。任何幫助將不勝感激!

+0

這有點不清楚。你需要括號內的所有內容嗎?嘗試[this](https://3v4l.org/GS7YP)。 – ishegg

+0

@ishegg yes在{anything} [this_is_what_i_need]之後括號內的所有內容 - 我會檢查出 – hunijkah

+1

哦,如果之前需要在捲曲之間存在字符串,請嘗試[this instead](https://3v4l.org/ gmh9q)。這些比賽在'$匹配[1]' – ishegg

回答

2

可以實現與此正則表達式:

/{.+?}\[(.+?)\]/i 

詳細

{.+?} # anything between curly brackets, one or more times, ungreedily 
\[  # a bracket, literally 
(.+?) # anything one or more times, ungreedily. This is your capturing group - what you're after 
\]  # close bracket, literally 
i  # flag for case insensitivity 

在PHP它應該是這樣的:

<?php 
$string = "{random_one}[SUBSTRING1] blah [SUBSTRINGX] blah blah {random_two}[SUBSTRING2] blah blah blah{random_one}[SUBSTRING3]"; 
preg_match_all("/{.+?}\[(.+?)\]/i", $string, $matches); 
var_dump($matches[1]); 

Demo

+0

這正是我所需要的,非常感謝! – hunijkah

+0

這沒有問題。祝你好運! – ishegg

相關問題