在php中匹配以capitals开头的单词?

时间:2012-12-31 18:28:38

标签: php regex preg-match preg-split

我有一个字符串

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

我想匹配以大写字母开头的单词,例如: 纳萨尔 韦勒 Gomez-Garcia等

I used this : 

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

但是它不起作用,请帮帮我吧!

2 个答案:

答案 0 :(得分:4)

preg_match_all('/[A-Z][a-z]*(?:-[A-Z][a-z]*)*/', $str, $match);
var_dump($match[0]);

答案 1 :(得分:1)

试试这个:

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

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

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


http://www.regular-expressions.info/lookaround.html视为一个快速参考,看起来这可能是你需要负面看法的正则表达式:

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

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