正規表現を使用して最初の文字($)で単語を見つけようとしましたが、機能させることができませんでした。 私は試した:
$string = "$David is the cool, but $John is not cool.";
preg_match("/b($w+)b/", $string, $matches);
私は$をエスケープしようとしましたが、それでも動作しません:
preg_match("/b($w+)b/", $string, $matches);
["$ David、$ John]を抽出したいと思います。
助けてください!
回答:
回答№1は1b
単語以外の文字と一致しない $
(別の非単語文字)。
b
は
(?<!w)(?=w)|(?<=w)(?!w)
あなたが使うことができるように
/(?<!w)($w+)b/
とはいえ、「おそらく何をチェックする理由はない」 $
、次のようにする必要があります:
/($w+)b/
さらに、その b
常に一致するため、省略できます。
/($w+)/
さらに、すべての一致が必要なようです。そのためには、使用する必要があります preg_match_all
の代わりに preg_match
.
回答№2の場合は0
前に述べたように、「単語境界と非単語境界を使用する必要はありませんが、他の変数と一致させるには、 preg_match_all:
$string = "$David is the cool, but $John is not cool.";
preg_match_all("/($w+)/", $string, $matches);
print_r($matches);
出力:
Array
(
[0] => Array
(
[0] => $David
[1] => $John
)
[1] => Array
(
[0] => $David
[1] => $John
)
)