PHP:preg_match正则表达式找不到正确的字符串

use*_*555 6 php regex

preg_match_all('/[\s]{1}(AA|BB|CC)+[\s]{1}/',' AA BB ',$matches);
Run Code Online (Sandbox Code Playgroud)

结果是AA,但我需要AABB.

Joh*_*ica 2

[\s]{1}您用来匹配匹配项之间的空白重叠的序列* 。后面的尾随空格"AA "与前面的空格相同" BB"。任何一个字符只能匹配一次,因此在扫描找到后," AA "它只会在剩余的"BB "字符串中搜索匹配项,而无法找到匹配项。

请尝试使用单词边界转义序列\b。这匹配单词的开头和结尾,但实际上不消耗任何字符,因此它可以匹配多次:

preg_match_all('/\b(AA|BB|CC)+\b/', 'AA BB', $matches);
Run Code Online (Sandbox Code Playgroud)

使用它\b的好处是不需要字符串周围有额外的空格。'AA BB'如果您愿意,您可以直接通过' AA BB '

* 顺便说一句,[\s]{1}与 是同一件事[\s],与简单的 相同\s。不需要方括号或大括号。