我必须在文本中选择连续的大写字母开头的单词(使用PHP preg_match()
)。
因此,在此文本“这是某些文本”中,应选择单词“ Some”,而在此文本中,“这是另一文本”中应选择“另一文本”。
我目前有这个表达式- ([A-Z][a-z]+)+
,但它只包含每个大写字母的单词。我需要它们作为一个整体(例如- [0] => "Another Piece Of"
,但是我现在得到了[0] => "Another", [1] => "Piece", [2] => "Of"
)
我应该如何对其进行更新,使其能够满足我的需求?
您可以使用此:
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];
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句