/ / знайти слово зі знаком долара - php, regex, preg-match, preg-match-all

знайти слово з знаком долара - php, regex, preg-match, preg-match-all

Я намагаюся знайти слова з першим символом ($), використовуючи regex, але я не міг це зробити. Я намагався:

$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.


0 для відповіді № 2

Як було сказано раніше, немає потреби використовувати межу слова та межу, а не межу, але для відповідності іншим змінним, ви повинні використовувати 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
)

)