perl正则表达式来分隔文本中的每个字母

时间:2013-02-28 04:27:29

标签: regex perl

如何使用perl正则表达式转换以下文本:

1100101
1100111
1110001
1110101

1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 1 0 0 0 1
1 1 1 0 1 0 1

我尝试使用

perl -pe 's// /g' < text.txt

但它给了我一些有趣的结果:

 1 1 0 0 1 0 1
  1 1 0 0 1 1 1
  1 1 1 0 0 0 1
  1 1 1 0 1 0 1

6 个答案:

答案 0 :(得分:7)

perl -pe 's/(?<=[^\n])([^\n])/ \1/g'

答案 1 :(得分:5)

为什么要使用正则表达式?

perl -pe '$_ = join " ", split ""'

答案 2 :(得分:2)

使用预见:

perl -pe 's/(\d)(?=.)/$1 /g'

使用前瞻和后视:

perl -pe 's/(?<=\d)(?=.)/ /g'

答案 3 :(得分:1)

使用自动拆分的另一种方法:

 perl -F// -ane 'print "@F";' file

答案 4 :(得分:0)

或者像这样...

$ perl -pe 's/(?<!^)(\d)/ \1/g' input
1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 1 0 0 0 1
1 1 1 0 1 0 1

......这里对负面正则表达式有一个很好的解释: negative regex for perl string pattern match

答案 5 :(得分:0)

你快到了:

perl -pe 's/(.)/$1 /g' your_file

测试如下:

> cat temp
1100101
1100111
1110001
1110101
> perl -pe 's/(.)/$1 /g' temp
1 1 0 0 1 0 1 
1 1 0 0 1 1 1 
1 1 1 0 0 0 1 
1 1 1 0 1 0 1