は、次の例については、正規表現で私を助けることができます短い私は単語/区切り文字の後に1つの単語/文字列を抽出しようとしていますサイズ次の白 スペース。したがって、上記の例では、(順番に)大、m、39.5となります。正規表現のphpにpreg_replace
アイデア?
クイックアップデート: あなたも
size:$(size)
または
size: $(size)
または
size $(size)
は、次の例については、正規表現で私を助けることができます短い私は単語/区切り文字の後に1つの単語/文字列を抽出しようとしていますサイズ次の白 スペース。したがって、上記の例では、(順番に)大、m、39.5となります。正規表現のphpにpreg_replace
アイデア?
クイックアップデート: あなたも
size:$(size)
または
size: $(size)
または
size $(size)
$strings = array(
'lorem ipsum size large lorem ipsum',
'lorem ipsum size m lorem ipsum',
'lorem ipsum size 39.5 lorem ipsum ',
);
foreach ($strings as $string) {
if (preg_match('#\bsize\b\s+(\S+)\s#', $string, $matches)) {
echo "<b>Matched '{$string}':</b>\n\n";
print_r($matches);
}
}
出力:
Matched 'lorem ipsum size large lorem ipsum':
Array
(
[0] => size large
[1] => large
)
Matched 'lorem ipsum size m lorem ipsum':
Array
(
[0] => size m
[1] => m
)
Matched 'lorem ipsum size 39.5 lorem ipsum ':
Array
(
[0] => size 39.5
[1] => 39.5
)
サイズは$matches[1]
に格納されます。
if (preg_match('/\bsize\W+(\S+)/', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
\bsize\W+
マッチ01の可能性を含めてください可能性がありに1つ以上の英数字以外の文字(空白、句読点など)が含まれていますが、\b
の単語境界アンカーのためにcapsize
と一致しません。
その後(\S+)
は、1つ以上の非空白文字にマッチし、最初の後方参照(この場合は$regs[1]
)でそれらをキャプチャします。
preg_match('/\ssize\s+(\S+)/', $string, $matches);
echo $matches[1];
私はそれが動作しないと思う。 PHPはlookbehindアサーション内で無限の繰り返しを許可しません。またはこれは新しいバージョンで変更されていますか? –
@Timあなたは正しいです:) – Karolis
これを抽出するか、置き換える必要がありますか? ['preg_match()'](http://www.php.net/preg_match)や['preg_match_all()']の代わりに['preg_replace()'](http://www.php.net/preg_replace) '](http://www.php.net/preg_match_all)を参照してください。 – binaryLV
私はそれを抽出する必要があります、ありがとう – Marcin