3

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
4

6 に答える 6

7
perl -pe 's/(?<=[^\n])([^\n])/ \1/g'
于 2013-02-28T04:37:04.507 に答える
5

なぜ正規表現を使用するのですか?

perl -pe '$_ = join " ", split ""'
于 2013-02-28T06:29:23.550 に答える
2

先読みの使用:

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

先読みと後読みの使用:

perl -pe 's/(?<=\d)(?=.)/ /g'
于 2013-02-28T05:00:51.630 に答える
1

自動分割を使用するもう 1 つの方法:

 perl -F// -ane 'print "@F";' file
于 2013-02-28T05:13:39.260 に答える
0

Or like this ...

$ 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

... there is a nice explanation of negative regex here: negative regex for perl string pattern match

于 2013-02-28T04:53:42.437 に答える
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 
于 2013-02-28T06:20:49.427 に答える