6

私はPHPを使用していますが、正規表現はあまり得意ではありません。文字または数字が隣接している場合にスペースを追加できるpreg_replaceが必要です。

シナリオは次のとおりです。

mystreet12 -> mystreet 12
mystreet 38B -> mystreet 38 B
mystreet16c -> mystreet 16 c
my street8 -> my street 8

ありがとう。

4

3 に答える 3

10

ルックアラウンドを使用して、次のような位置に一致させることができます。

preg_replace('/(?<=[a-z])(?=\d)|(?<=\d)(?=[a-z])/i', ' ', $str);

「文字」をどのように定義するかによって、調整したい場合があります[a-z]

次のような文字列で適切に機能させるには、ルックアラウンドが必要です。

0a1b2c3

なしのソリューションが失敗する場所。

于 2012-06-13T22:36:21.020 に答える
3

何かのようなもの:

preg_replace("/([a-z]+)([0-9]+)/i","\\1 \\2", $subject);

あなたを遠くまで連れて行ってくれるはずです:)

于 2012-06-13T22:35:26.553 に答える
2

移植性のための POSIX クラスの使用:

preg_replace("/([[:alpha:]])([[:digit:]])/", "\\1 \\2", $subject);

最初のトランジションを取得します。

preg_replace("/([[:digit:]])([[:alpha:]])/", "\\1 \\2", $subject);

秒を取得します。

于 2012-06-13T22:35:09.827 に答える