0

使用中に区切り文字を含めようとしましpreg_splitたが、失敗しました。

print_r(preg_split('/((?:fy)[.]+)/', 'fy13 eps fy14 rev', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY));

私は戻ろうとしています:

array(
    [0] => fy13 eps
    [1] => fy14 rev
)

flags パラメータを に設定PREG_SPLIT_DELIM_CAPTURE:

このフラグが設定されている場合、区切り文字パターンの括弧で囲まれた式もキャプチャされて返されます。

fy括弧内にあるため、これが機能しない理由はわかりません。

4

2 に答える 2

0

あなたが示した例では、 preg_split関数を本当に使用する必要があるかどうかはわかりません。たとえば、(パフォーマンスの観点から)より効率的な方法でpreg_match_allを使用して同じものを取得できます。

preg_match_all('/fy(?>[^f]++|f++(?!y\d))*/', 'fy13 eps fy14 rev', $results);
print_r($results);

ここでの考え方は、一致fy後にすべての文字がf1 回以上続くか、すべての文字が0回以上f続かないことです。y

(?>..)およびそれぞれの詳細情報++:

  1. 原子団はこちら
  2. 所有量指定子についてはこちら
于 2013-06-13T21:56:18.490 に答える