-1

我有一个字符串

 $str="NassarWellerGomez-GarciaSanchez-RenedoLoeches-SanchezGomez-GarciaMunoz-FerrerasSanchez-RenedoChiaoHakkarainenWernerValkamaHarounPlett";

我只想匹配以大写字母开头的单词,例如:Nassar Weller Gomez-Garcia 等

I used this : 

preg_match('/[A-Z][a-z]+/', $str,$match);

但它不起作用,请在这里帮助我!

4

2 回答 2

4
preg_match_all('/[A-Z][a-z]*(?:-[A-Z][a-z]*)*/', $str, $match);
var_dump($match[0]);
于 2012-12-31T18:43:46.613 回答
1

尝试这个:

$result = preg_split('/[A-Z]/', $str, null, PREG_SPLIT_DELIM_CAPTURE);
var_dump($result);

我还没有测试过它,但我认为它会起作用,或者至少为你指明正确的方向。

它不适用于带连字符的名称。为此,我相信您需要使用(正面或负面)lookbehind,但我不知道如何解释这一点。您必须查找它,但至少现在您知道要查找什么。


查看http://www.regular-expressions.info/lookaround.html作为快速参考,看起来这可能是您需要的带有负面后视的正则表达式:

'/(?<!-)[A-Z]/'

这基本上意味着“匹配任何不带连字符的大写字母”。

于 2012-12-31T18:33:14.457 回答