2011-01-19 16 views
3

小文字のnを改行で置き換えることができる正規表現が必要ですが、その後に数字の0-9または大文字が続く場合のみです。私はPHPでこのデータをサニタイズしようとしているので、結果の式に互換性であることが必要
Company Building
100 Prospect Way
文字の後ろに数字または大文字を一致させる正規表現が必要


Company Buildingn100 Prospect Way

に変換する必要があります。たとえば、文字列が

答えて

4

これを試してみてください:PHPで

n(?=[\dA-Z]) 

working example):

$str = preg_replace("/n(?=[\dA-Z])/", "\n", $str); 

(?=...)が肯定先読みである - それは我々が一致n後に何があるかチェックしますが、それと一致していないので、次の文字は置換されません。

3
$result = preg_replace("/n(?=[\dA-Z])/", "\n", $subject); 

大文字の場合はASCII文字を使用します。

$result = preg_replace("/n(?=[\d\p{Lu}])/u", "\n", $subject); 

ユニコードを使用している場合。

+0

「\ n」の二重引用符? – BoltClock

+0

@BoltClock:RegexBuddyはこのコードスニペットを生成しました(私はPHPを知らない)。一重引用符で何が間違っているかを精緻化できますか? –

+5

PHPは一重引用符で囲んだエスケープ文字を認識しません。二重引用符で囲んでください:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single。サンプルコード:http://ideone.com/8Pfhy( '\\ n'を表示し、新しい行は' \ n "'と表示するように注意してください)。ちなみに、私はPHPの正規表現のためのこの便利なサイトを見つけました:http://www.pagecolumn.com/tool/pregtest.htm(私はPHPも知らないが、 ': ) – Kobi

関連する問題