正则表达式 - 选取以大写字母开头的连续单词

时间:2014-07-27 18:58:31

标签: php regex

我必须在文本中使用连续的大写字母起始单词(使用PHP preg_match())。

所以在这篇文章中 - "这是一些文字"它应该接受单词" Some",但在本文中 - "这是另一段文字"它应该拿起另一块"。

我目前有这个表达式 - ([A-Z][a-z]+)+,但它只收集每一个大写字母单词。我需要它们作为整行(例如 - [0] => "Another Piece Of",但我目前得到[0] => "Another", [1] => "Piece", [2] => "Of"

我应该如何更新它以便它能满足我的需要?

1 个答案:

答案 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];
}
相关问题