我必须在文本中使用连续的大写字母起始单词(使用PHP preg_match()
)。
所以在这篇文章中 - "这是一些文字"它应该接受单词" Some",但在本文中 - "这是另一段文字"它应该拿起另一块"。
我目前有这个表达式 - ([A-Z][a-z]+)+
,但它只收集每一个大写字母单词。我需要它们作为整行(例如 - [0] => "Another Piece Of"
,但我目前得到[0] => "Another", [1] => "Piece", [2] => "Of"
)
我应该如何更新它以便它能满足我的需要?
答案 0 :(得分: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];
}