以下の仮定の下で:
- 識別子は常に大文字です
- 識別子は常に3文字で構成されます
- Number1には数字のみがあり、常にダッシュが前に付きます
- Number2には数字のみがあり、常にダッシュが前に付きます
この正規表現は機能します->'/([A-Z]{3})-([0-9]*)-([0-9]*)/'
例:
$data = 'Blablabla ABC-3901-11801 John Doe Blablabla';
preg_match_all('/([A-Z]{3})-([0-9]*)-([0-9]*)/', $data, $matches, PREG_PATTERN_ORDER);
var_dump($matches);
これは出力します
array
0 =>
array
0 => string 'ABC-3901-11801' (length=14)
1 =>
array
0 => string 'ABC' (length=3)
2 =>
array
0 => string '3901' (length=4)
3 =>
array
0 => string '11801' (length=5)
- $matches[1]は常に識別子です
- $matches[2]は常にnumber1です
- $matches[3]は常にnumber2です
編集:これは、より一般的な正規表現でもあります:
/([A-Za-z]*)-([0-9]*)-([0-9]*)/
これは、IDENTIFIERに文字(任意の数字、大文字または小文字)のみが含まれていることのみを前提としています。
たとえば、この正規表現はこの場合に機能します
Blablabla abcdef-3901-11801 John Doe Blablabla