/ / encontrar palavra com cifrão - php, regex, preg-match, preg-match-all

encontrar palavra com cifrão - php, regex, preg-match, preg-match-all

Eu estou tentando encontrar palavras com o primeiro caractere ($) usando o regex, mas não consegui fazê-lo funcionar. Eu tentei:

$string = "$David is the cool, but $John is not cool.";
preg_match("/b($w+)b/", $string, $matches);

Eu tentei escapar do $ mas ainda não funciona:

preg_match("/b($w+)b/", $string, $matches);

Eu gostaria de extrair [$ David, $ John].

Por favor ajude!

Respostas:

1 para resposta № 1

b não será compatível com um caractere que não seja uma palavra e $ (outro caractere não palavra).

b

é equivalente a

(?<!w)(?=w)|(?<=w)(?!w)

então você poderia usar

/(?<!w)($w+)b/

Dito isto, provavelmente não há razão para verificar o que é antes do $, então o seguinte deve fazer:

/($w+)b/

Além disso, b irá sempre corresponder, por isso pode ser deixado de fora.

/($w+)/

Além disso, você parece querer todas as correspondências. Para isso, você precisará usar preg_match_all ao invés de preg_match.


0 para resposta № 2

Como foi dito antes, não há necessidade de usar limite de palavra e não limite de palavra, mas para corresponder a variáveis, você tem que usar preg_match_all:

$string = "$David is the cool, but $John is not cool.";
preg_match_all("/($w+)/", $string, $matches);
print_r($matches);

Saída:

Array
(
[0] => Array
(
[0] => $David
[1] => $John
)

[1] => Array
(
[0] => $David
[1] => $John
)

)