YAMANEKO's Laboratory - Perlのかけら
【正規表現】 文章を右端で折り返す
$a=~s/(.{1,70}\S)\s+/$1\n/g ;

半角英数字専用、単語の境界で折り返します。複雑なことをするようでも、実は正規表現はぜんぜん単純。ただ、全角混じりは、正規表現&置換だけではできない・・ような気がします。

この正規表現の意味は・・(上から順に読んでください)

(
.{1,70}
\S
)
\s+
  何かの文字が1〜70文字      
    その後ろに空白以外が1文字    
( この部分を$1とする )  
        その後ろに空白が1文字以上
【正規表現】 0詰めされた数字の0をとる
$a=~s/(?<!\d)0+(\d+)/$1/g ;

2002/05/01 のように、左に0が詰められた数字の0を取り除きます。日付のように/や-で区切られたような文字列の場合、一括で処理できます。

この正規表現の意味は・・

(?<!
\d
)
0+
(
\d+
)
  数字1文字          
が左になくて        
      0が1文字以上あって      
          その後ろに数字が1文字以上  
        ( この部分を$1とする )
【正規表現】 カンマで位取りする
$a=~s/(\d+?)(?=(\d{3})+(?!\d))/$1,/g ;

数字に「10,000,000」のようにカンマをふる方法。某書からそのまんま書き写した解説ページはよく見かけるのですが・・ここでは、whileは使わずに、正規表現&置換1発でやってみました。符号は対応、ただし小数点は未対応です。

この正規表現の意味は・・

(
\d
+?
)
(?=
(\d{3})
+
(?!
\d
)
)
  数字                  
    がなるべく少なく1文字以上                
( この部分を$1とする )              
        ただしその右側に
          数字3文字の塊          
            が1つ以上あって        
                数字1文字    
              がその右にない