Regex 比赛中的一部分。如何找到所有?
我正在查找文档中的所有变量,并发现不需要的特性。在:Regex 比赛中的一部分。如何找到所有?,regex,preg-match,preg-match-all,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。我不知道怎么解决这个问题。请帮助:)这是因为您的正则表达式末尾的none-word标记使您的正则表达式与$aaa$匹配(《代码>\W与最后的$)匹配。要拒绝
$from = "(some txt)$aaa$bbb(another txt)";
preg_match_all("/[\$]([a-zA-Z_]{1})([a-zA-Z0-9_]*?)(\W)/", $from, $matches);
脚本仅返回$aaa作为匹配项,但不返回$bbb。我不知道怎么解决这个问题。请帮助:)这是因为您的正则表达式末尾的none-word标记使您的正则表达式与
$aaa$
匹配(《代码>\W与最后的$)匹配。要拒绝此类行为,您可以将\W
放在积极的前瞻中。您还可以将$
和\W
之间的所有正则表达式放在一个组中:
/\$([a-zA-Z_][a-zA-Z0-9_]*)(?=\W)/
请参阅演示oO我不知道如何捕获组。我以为这只是为了澄清代码。谢谢;)