2

この予測可能なパターンに従う文字列があります。

This is a string, it has a comma in it, This is another string, it also has a comma in it, This is a third string, it follows the trend

等々。

明らかに、文字列はコンマで区切られたリストを表します。ただし、リストの項目にもコンマが含まれています。新しい項目の始まりを決定する方法は大文字です。

これでパターンを一致させることができました[, \p{Lu}]が、次に何をすべきかわかりません。使用するpreg_split()と、必要なコンマが失われますが、大文字も失われますが、そうではありません。正しく preg_replaced 文字列は次のようになります。

This is a string, it has a comma in it<br />
This is another string, it also has a comma in it<br />
This is a third string, it follows the trend
4

1 に答える 1

11

先読みアサーションを使用します。

$result = preg_replace('/, (?=\p{Lu})/u', '<br />\n', $subject);

正規表現は、「,大文字の Unicode 文字が続く場合にのみ、a とスペースに一致する」ことを意味します。そうすれば、手紙は試合自体の一部にはなりません。

于 2013-05-29T16:25:52.963 に答える