Php 当正则表达式等于或大于4个字符时,创建一个正则表达式以仅匹配句子的第一个单词

Php 当正则表达式等于或大于4个字符时,创建一个正则表达式以仅匹配句子的第一个单词,php,regex,Php,Regex,我需要创建一个正则表达式,当它等于或大于4个字符时,只匹配句子的第一个单词。我在这里寻找真理和论坛,但不能像 例如: "Christmas Baskets"> "Christmas" "Tea and infusions"> "Tea and infusions" "Beer"> "Beer" 这是正则表达式的一个奇怪用法。以下内容仅与句子开头超过3个字符的单词匹配: /^[^\s][^\s][^\s][^\s]+/ 我不确定我是否正确理解了这个问题,但这应该给出您描述的输

我需要创建一个正则表达式,当它等于或大于4个字符时,只匹配句子的第一个单词。我在这里寻找真理和论坛,但不能像

例如:

"Christmas Baskets"> "Christmas"
"Tea and infusions"> "Tea and infusions"
"Beer"> "Beer"

这是正则表达式的一个奇怪用法。以下内容仅与句子开头超过3个字符的单词匹配:

/^[^\s][^\s][^\s][^\s]+/

我不确定我是否正确理解了这个问题,但这应该给出您描述的输出:

function get_first_word_or_sentence($sentence)
{
    $word = strtok($sentence, ' ');

    return strlen($word) >= 4 ? $word : $sentence;
}

这个不需要正则表达式。使用
strpos
查找字符串中的第一个空格-如果没有空格,或者位于位置5或以下,则打印整个字符串。否则,使用
substr
只提取相关部分。如果第一个单词少于四个字符,它应该匹配什么?您似乎想返回整个句子?好主意,但您可以这样写
^\S{4,}
,但这无法检查它是否为字母。