Я намагаюся знайти слова з першим символом ($), використовуючи 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 для відповіді № 1b
не співпадає між символом, що не є словом, і $
(інший символ без слова).
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
)
)