12
preg_replace()
のようなPHPメソッドと正規表現を使用して大文字の文字列にスペースを追加したいが、それらが連続しているときに最初の大文字にスペースを追加したいだけだ。私は正規表現に、連続した首都の最後の首都が前にスペースを置くための次の首都でなければならないことを知りたい。大文字で文字列にスペースを追加するにはどうすればよいですか?PHPとRegexを使用して連続した大文字を維持しますか?
これらの文字列は例です:
なっTodayILiveInTheUSAWithSimon USAToday IAmSOOOBored
:
Today I Live In The USA With Simon USA Today I Am SOOO Bored
はこれが行われ、どのようにすることはできますか?
この質問(Regular expression, split string by capital letter but ignore TLA)は、これで実現しているようです。
WORKING SOLUTION
ここで私が使用して完全なコードです:
$string = 'TodayILiveInTheUSAWithSimon';
$regex = '/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/';
$string = preg_replace($regex, ' $1', $string);
は、これらの正規表現の仕事の両方:
/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/
/((?<=[a-z])(?=[A-Z])|(?=[A-Z][a-z]))/
最初のものはRegexidentのソリューション@からです2番目のものよりも非常にわずかに高速です。
この正規表現でこれを達成するにはどのPHPメソッドを使用しますか? –
@ T.BrianJones:それは[preg_replace](http://php.net/manual/en/function.preg-replace.php)です。 – Regexident
'preg_replace():コンパイルに失敗しました:POSIXという名前のクラスは、オフセット4のクラス内でのみサポートされています。' '次のエラーが発生します:' echo preg_replace( '((<![!upper:]) )、 '$ 1'、$ string); ' –