/ /ドル記号で単語を見つける-php、regex、preg-match、preg-match-all

ドル記号で単語を見つける - PHP、正規表現、プレグマッチ、プレグマッチ - すべて

正規表現を使用して最初の文字($)で単語を見つけようとしましたが、機能させることができませんでした。 私は試した:

$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は1

b 単語以外の文字と一致しない $ (別の非単語文字)。

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
)

)