2011-12-05 15 views
2

私は正規表現についての詳細を学ぶためにしようと、私は次のように疑問を抱いてきた過程にいるよ:ドット文字の後にスペースを挿入する方法正規表現置換

が、ドット文字がある場合にのみ、数字に囲まれていない、例えばそれは一致する必要があります。しかし、22.22!

答えて

4

これはzero-width assertionsの素敵なケースです:

$subject =~ 
    s/(?<=\.   # after a dot, 
     (?!   # but not matching 
      (?<=\d\.) # digit followed by dot before, AND 
      (?=\d)  # digit afterward 
     ) 
    )/ /x 
    g; 

私はあなたが自己説明のコメントを見つけるだろうと思います! :)

2

試してみてください。

echo "22.22"|perl -pe 's{(\D)\.(\D)}{$1. $2}' 
22.22 
echo "2x.x2"|perl -pe 's{(\D)\.(\D)}{$1. $2}' 
2x. x2