-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);

私はそれをテストしていませんが、うまくいくか、少なくとも正しい方向に向けると思います.

ハイフンでつながれた名前では機能しません。そのためには、(正または負の)後読みを使用する必要があると思いますが、頭の中でそれを説明するには十分ではありません。調べる必要がありますが、少なくとも何を探すべきかはわかりました。


クイック リファレンスとしてhttp://www.regular-expressions.info/lookaround.htmlを見ると、おそらくこれは、必要な負の後読みを含む正規表現のように見えます。

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

これは基本的に「ハイフンが続かない大文字に一致する」ことを意味します。

于 2012-12-31T18:33:14.457 に答える