2017-09-20 22 views
1

何かにマッチする正規表現と区切り文字の間のすべての部分文字列を返す関数が必要です。PHP - 2つの正規表現間の部分文字列を見つける

$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

少し不明です。あなたは括弧の間にすべてが必要ですか? [こちら](https://3v4l.org/GS7YP)を試してください。 – ishegg

+0

@isheggはい{何と}の後にかっこの間のすべて[this_is_what_i_need] - 私はそれをチェックします – hunijkah

+1

ああ、前に縮めの間に文字列が必要な場合は、[代わりに](https://3v4l.org/)を試してみてくださいgmh9q)。一致は '$ matches [1]'にあります – ishegg

答えて

2

あなたがこの正規表現とすることを達成することができます:PHPで

/{.+?}\[(.+?)\]/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 
$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

関連する問題