2011-12-16 8 views
0

ポイントの後に次の文字がラインの終わりでないと仮定して、スペースの後ろにアルファベットまたは数字の文字がある場合はスペースを追加したい(cr、lf、... ) キャラクター。私はPHPでこれを行うことがどのように"/. [a-z0-9]/i"ポイントの後にスペースを追加するには?

preg_replace"/.[a-z0-9]{1}/"

答えて

5

あなたはpositive lookaheadを使用することができます:あなたはすでに

$text = preg_replace('#\.([A-Za-z0-9])#', '. $1', $text); 

ほとんど正しい答えを掲載

$str = preg_replace("/\.(?=[a-z\d])/i", ". ", $str); 

DEMO

+0

を行う必要がありますが、それは理解するのが少し難しいです。この# "(?= [a-zA-Z \ d])[:]#" 'は、アルファベットや数字の後ろにある任意のものを見つけることができますか?それは動作していないようです。 – Oliver

+0

いいえ、これは何も一致しません。 Lookaheadsと-behindsは文字ではなく、* positions *と一致します。したがって、この場合、次の英数字の任意の位置に一致します。しかし、コロンは英数字ではないため、全体の表現は一致しません。 '#:(?= [a-zA-Z \ d])#'が必要です。次の文字が英数字の場合のみ、これはコロンにマッチします。先見の明と背後には理解するのが少し難解かもしれないので、あなたの頭の中に頭を浮かべるのに時間がかかっても心配しないでください。 –

+0

その直前のチャーターをテストするにはどうすればよいですか? – Oliver

2

は、私はドキュメントを読んだトリック

関連する問題