Php 如何用正则表达式过滤大写第一个字符的单词?

Php 如何用正则表达式过滤大写第一个字符的单词?,php,regex,string,Php,Regex,String,我试图用大写的第一个字符过滤单词,并用“*”替换。(我使用php) 这是一个示例输入: “福福福” 正确的输出: “foo***” 这是我的代码: $pattern = " THIS IS WHAT I NEED! "; $replaceWith = "*"; $result = preg_replace($pattern, $replaceWith, " foo Foo FOO "); 我希望你能帮助我,我是新的正则表达式,我需要一个快速的解决方案 更新: 表达方式如下: (?:^ |)(?

我试图用大写的第一个字符过滤单词,并用“*”替换。(我使用php)

这是一个示例输入:

“福福福”

正确的输出:

“foo***

这是我的代码:

$pattern = " THIS IS WHAT I NEED! ";
$replaceWith = "*";
$result = preg_replace($pattern, $replaceWith, " foo Foo FOO ");
我希望你能帮助我,我是新的正则表达式,我需要一个快速的解决方案

更新:

表达方式如下:


(?:^ |)(?您可以在此处使用单词边界,然后匹配
[A-Z]
以确保单词以大写字母开头:

$s = ' foo Foo FOO ';
echo preg_replace('/\b[A-Z]\w*\b/', '*', $s);
//=> foo * *
要使其符合unicode标准,请使用:

echo preg_replace('/\b\p{Lu}\w*\b/', '*', $s);
//=> foo * *
(?:^|)(?)?
查看演示:


工作,但你知道如何考虑口音(西班牙语中使用)。比如“Casixn”(歌曲),或者“avixn”(飞机)。看看这个正则表达式只能找到第一个字母!
(?:^|(?<=\s))[A-Z]\w*\b
[A-Z][^\s]+