私は真ん中に年があるこの文字列を持っています。年とその前後のすべてを抽出したい。
次の個々の正規表現を使用しています。
- 抽出日:
'/\d{4}\b/'
- 日付より前のすべてを抽出します:
'/(.*?)\d{4}\b/';
(結果から日付を除外する方法はわかりませんが、それは問題ではありません...) - 日付以降のすべてを抽出:
'/d{4}\/(.*?)\b/'
(これは機能していません)
$str = 'The year is 2048, and there are flying forks.';
$regex = '/(.*)\b\d{4}\b(.*)/';
preg_match($regex,$str,$matches);
$before = isset($matches[1])?$matches[1]:'';
$after = isset($matches[2])?$matches[2]:'';
echo $before.$after;
編集:複数年の経験に関するOP(ルイス)のコメントに答えるには:
$str = 'The year is 2048 and there are 4096 flying forks from 1999.';
$regex = '/(\b\d{4}\b)/';
$split = preg_split($regex,$str,-1,PREG_SPLIT_DELIM_CAPTURE);
print_r($split);
$split
次のような配列を提供します。
Array
(
[0] => The year is
[1] => 2048
[2] => and there are
[3] => 4096
[4] => flying forks from
[5] => 1999
[6] => .
)
この2番目の例は、解析可能なデータの仮定に伴うリスクも示しています(4096のフォークの数は4桁の年のフォークの数と一致することに注意してください)。