我有一个字符串
$str="NassarWellerGomez-GarciaSanchez-RenedoLoeches-SanchezGomez-GarciaMunoz-FerrerasSanchez-RenedoChiaoHakkarainenWernerValkamaHarounPlett";
我想匹配以大写字母开头的单词,例如: 纳萨尔 韦勒 Gomez-Garcia等
I used this :
preg_match('/[A-Z][a-z]+/', $str,$match);
但是它不起作用,请帮帮我吧!
答案 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]/'
这基本上意味着“匹配任何大写字母不后跟连字符。”