2015-12-25 58 views
2

說我有一個很長的代碼。我使用正則表達式正常perl/regex:如何查找和替換每n個字符集之間

s/<continuation chars>/\s/g 

然而,這導致行比我的編譯器17000或類似的字符限制更大消除延續字符連接線。

我怎樣才能得到這1699個字符段之間進行分割:

即查找和替換 ;如果行長度>極限,則爲 ; 跳過下一更換,並開始進程再次

** 編輯 **

我想說:換行字符之間,爲每1700字符(查找和替換),找到下一個匹配和不更換(即跳過),然後重複下一個1700 .. **

+0

您可以使用'length'來檢查字符串的長度。 '\ s'在替換的替換部分中沒有意義。 – choroba

+0

空間是否足以替換換行符(替換部分)? –

+1

TITS - 「試試看」! – choroba

回答

2

使用length獲取字符串的長度。只需在變量中累積總長度:

#!/usr/bin/perl 
use warnings; 
use strict; 

my $limit = 1700; 

my $length = 0; 
while (<>) { 
    s/\n/ /; 
    $length += length; 
    if ($length > $limit + 1) { 
     s/ $//; 
     print "\n"; 
     $length = length; 
    } 
    print; 
} 
相關問題