さまざまな文字列から特定の部分を引き出しようとしていますが、正しい正規表現を取得するのに非常に苦労しています。これが私が引っ張ろうとしているもののいくつかの例です:
- AG055.MA-MAGNUM(MAだけを返したい)
- WI460.16-何か(16を返したい)
- AG055.QB(QBを返したい)
つまり、基本的には、ピリオドの後、スペースの前で文字をプルしたいだけです。前後には何もありません。誰かが正しい正規表現を取得するために私に手を差し伸べることができますか?
これは機能するはずです:
<?php
preg_match( '/\.([^ ]+)/', $text, $matches );
print_r( $matches );
?>
出力:
Array
(
[0] => .MA
[1] => MA
)
Array
(
[0] => .16
[1] => 16
)
Array
(
[0] => .QB
[1] => QB
)
正規表現は、を見つけると言っています。文字を入力し、その後にスペース文字ではない文字を取得します。+を指定すると、ドットの後にスペース以外の文字がある場合にのみ一致が返されます。
preg_match('/\w+\.(\w{2})\s/', $input, $matches);
echo $matches[1];
\w+
1つ以上の単語文字(az、AZ、および0-9)を意味します。\.
\.
ピリオド/ドットを意味します(正規表現で演算子として使用されるため、バックスラッシュはそれをエスケープするためのものです)(\w{2})
2語の文字に一致\s
空白を意味しますpreg_match('/^[A-Z0-9]{5}\.([A-Z0-9]{2})/', $string, $matches);
var_dump($matches);
の文字を返す必要があり$matches[1]
ます。