我试图使用正则表达式找到带有第一个字符($)的单词,但我无法使其工作。 我试过了:
$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]。
请帮忙!
答案 0 :(得分:1)
\b
在非单词字符和$
(另一个非单词字符)之间不匹配。
\b
相当于
(?<!\w)(?=\w)|(?<=\w)(?!\w)
所以你可以使用
/(?<!\w)(\$\w+)\b/
那就是说,可能没有理由检查$
之前的内容,所以以下内容应该这样做:
/(\$\w+)\b/
此外,\b
将始终匹配,因此可以省略。
/(\$\w+)/
此外,您似乎想要所有匹配项。为此,您需要使用preg_match_all
代替preg_match
。
答案 1 :(得分: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
)
)