Php 正则表达式-拾取以大写字母开头的连续单词
我必须在文本中提取连续的大写字母起始词(使用PHPPhp 正则表达式-拾取以大写字母开头的连续单词,php,regex,Php,Regex,我必须在文本中提取连续的大写字母起始词(使用PHPpreg_match()) 所以在这段文字中-“这是一些文字”应该用“一些”这个词,但在这段文字中-“这是另一段文字”应该用“另一段” 我现在有一个表达式-([A-Z][A-Z]+)+,但它只提取每个大写字母。我需要将它们作为一整行(例如-[0]=>“另一块”,但我目前得到了“”的[0]=>“另一块”、[1]=>“一块”、[2]=>) 我应该如何更新它以使其满足我的需要?您可以使用以下方法: if (preg_match('~[A-Z][a-z]
preg_match()
)
所以在这段文字中-“这是一些文字”应该用“一些”这个词,但在这段文字中-“这是另一段文字”应该用“另一段”
我现在有一个表达式-([A-Z][A-Z]+)+
,但它只提取每个大写字母。我需要将它们作为一整行(例如-[0]=>“另一块”
,但我目前得到了“”的[0]=>“另一块”、[1]=>“一块”、[2]=>)
我应该如何更新它以使其满足我的需要?您可以使用以下方法:
if (preg_match('~[A-Z][a-z]*(?> [A-Z][a-z]*)*~', $text, $m)) {
echo $m[0];
}
(?>[A-Z][A-Z]*)*
表示可选的其他单词
为了更灵活,您可以将其更改为(?>\s+[A-Z][A-Z]*)*
注意:如果需要处理重音词,可以使用\p{Ll}
和\p{Lu}
字符类:
if (preg_match('~\p{Lu}\p{Ll}*(?>\s+\p{Lu}\p{Ll}*)*~', $text, $m)) {
echo $m[0];
}
看起来不像正则表达式的任务。一旦找到它们,预期的结果是什么?