比赛的一部分比赛。如何找到所有?

时间:2015-07-27 15:12:04

标签: regex preg-match preg-match-all

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

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

脚本仅返回$ aaa作为匹配但不返回$ bbb。我不知道如何解决这个问题。请帮助:)

1 个答案:

答案 0 :(得分:2)

这是因为你的正则表达式末尾没有单词标记会使你的正则表达式匹配$aaa$\W匹配最后一个$)。对于拒绝此类行为,您可以将\W置于正向前方。此外,您可以将$\W之间的所有正则表达式放在一个组中:

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

请参阅演示https://regex101.com/r/uV1cA2/1