比赛的一部分。怎么全部找?

Part of match in match. How to find all?

我正在寻找文档中的所有变量并发现不需要的功能。期间:

$from = "(some txt)$aaa$bbb(another txt)";
preg_match_all("/[$]([a-zA-Z_]{1})([a-zA-Z0-9_]*?)(\W)/", $from, $matches);

脚本 return 只有 $aaa 作为匹配而不是 $bbb。我不知道如何解决。请帮助:)

这是因为正则表达式末尾的 none 单词标记使您的正则表达式匹配 $aaa$\W 匹配最后一个 $)。对于这种行为的拒绝,你可以把 \W 正面看 ahead.Also 你可以把 $\W 之间的所有正则表达式放在一组中:

/$([a-zA-Z_][a-zA-Z0-9_]*)(?=\W)/

观看演示 ​​https://regex101.com/r/uV1cA2/1