正则表达式替换

时间:2011-12-05 20:08:08

标签: regex perl

我正在尝试更多地了解正则表达式,我一直想知道以下内容:

如何在点字符后插入空格,但仅当点字符未被数字包围时,例如它需要匹配。但不是22.22!

2 个答案:

答案 0 :(得分:4)

这是一个很好的 zero-width assertions

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

我认为你会发现这些评论不言自明! :)

答案 1 :(得分: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