2

のような文字列があり、展開された{ASK(Value, Value, 'Sentence', Some_Char)}値を取得する必要があります()。私は何を間違っていますか?

preg_match_all('/\{ASK\((.*?),\)\}/', '{ASK(Value, Value, \'Sentence\', X)}', $matches);
print_r($matches); 
4

5 に答える 5

0
$s = "{ASK(Value, Value, 'Sentence', Some_Char)}";
$p = '#\{ASK\((.*?)\)\}#';
preg_match_all($p, $s, $matches);
print_r($matches);
于 2013-02-28T07:36:42.903 に答える
0

単に分割して爆発させる

$Myval = "{ASK(Value, Value, 'Sentence', Some_Char)}";

$splitedVal = split('[()]', $Myval);

$explodedVal = explode(",", $splitedVal[1]);

print_r($explodedVal);

//出力

Array ( [0] => Value [1] => Value [2] => 'Sentence' [3] => Some_Char ) 
于 2013-02-28T07:36:48.390 に答える
0

これを行う簡単な方法は (正規表現に完全に含まれているわけではありませんが)、次のようになります。

preg_match_all('/\{ASK\([^)]*\)\}/', '{ASK(Value, Value, \'Sentence\', X)}', $matches);
$values = explode($matches[1]);
于 2013-02-28T07:39:39.873 に答える
0

正規表現からコンマを削除すると、一致します。

preg_match_all('/\{ASK\((.*?)\)\}/', '{ASK(Value, Value, \'Sentence\', X)}', $matches);
print_r($matches);

//Explode the matched group
$exploded = explode(',',$matches[1]); 
print_r($exploded);

/*
 * Note that we used $matches[1] instead of $matches[0], 
 * since the first element contains the entire matched 
 * expression, and each subsequent element contains the matching groups.
 */
于 2013-02-28T07:34:16.150 に答える