2011-03-17 58 views
2

我試圖重新格式化一些數據,當我從pdf複製文本時,這些數據播放不好。如何用正則表達式查找和替換實例

Cordless 
9B12071R 
CHARGER, 3.6V,LI-ION 
Cordless 
9B12073R 
CHARGER,NI-CD,FRAMER 
Framing/Sheathing tools 
F28WW 
WIRE COLLATED FRAMIN 
Framing/Sheathing tools 
N89C-1 
COIL FRAMING NAILR 
Framing/Sheathing tools 
N80CB-HQ 

我想擁有它的格式是這樣的:

Cordless  9B12071R  CHARGER, 3.6V,LI-ION 
Cordless  9B12073R  CHARGER,NI-CD,FRAMER 
.... 

我試圖做的是一個查找和替換,它取代了第一兩條新線「\ n」與標籤「 \ t「,並留下第三個」\ n「。

我做的第一件事就是用「\ t」替換所有「\ n」,這很容易。之後,我想用「\ n」替換第三個「\ t」。我將如何使用正則表達式來做到這一點?

+2

使用什麼工具/語言? – 2011-03-17 19:30:28

+0

Editpad Pro填充 – polyhedron 2011-03-17 19:32:50

回答

3

對於EditPadPro,將其粘貼到Search框中

([A-Za-z /]+) 
([A-Za-z0-9_-]+) 
(.*) 

粘貼此進入Replace

\1 \2 \3 

而且應該這樣做。基本上,你可以使用Ctrl鍵添加回車和製表符 + 在EditPadPro輸入按Ctrl +標籤

我不得不在問題中添加回車符,因爲它缺少我認爲的最後一行。所有其他人都在數據的三倍。

+0

謝謝!我只是通過複製和粘貼你的正則表達式來工作,但我無法重新創建它。我不得不使用Shift + Tab。持有Ctrl + 標籤沒有做任何事情。 – polyhedron 2011-03-17 21:07:33

+0

另外,你是如何輸入整齊的Ctrl + Enter的形式?棒極了。 – polyhedron 2011-03-17 21:08:41

+0

http://meta.stackexchange.com/questions/26207/how-can-i-format-as-keyboard-keys但我不認爲它在評論中有效。是Shift + Enter/Tab也適用於插入這些字符。我只是一直有Ctrl爲我工作。很高興它解決了你的問題:) – andyb 2011-03-17 21:16:14

0

這是一個正則表達式的工作,或者你可以依靠行號?

$ perl -nE 'chomp; print $_, $.%3? "\t": "\n"' file 

編輯(後評論)

如果你做到這一點在編輯器中,那麼這個作品在VIM:

%s/\(.\+\)\n\(\C[A-Z0-9-]\+\)\n\(.\+\)/\1^I\2^I\3/ 

這裏最重要的一點是在假設完全由A-Z,0-9-組成的線構成零件號。 ^I是一個選項卡,您鍵入選項卡和vim打印^I。 (!我希望你的編輯器有這麼多的類固醇)

+0

我不能依賴行號。純文本。 Editpad親基本上是類固醇記事本 – polyhedron 2011-03-17 19:49:34

1

好吧,這裏是PHP代碼,不會正是,只要你想:

<?php 
    $s = "Cordless 
    9B12071R 
    CHARGER, 3.6V,LI-ION 
    Cordless 
    9B12073R 
    CHARGER,NI-CD,FRAMER"; 

    $p = '/(Cordless.*?)\\n(.+?)\\n(CHARGER.+?)(\\n|$)/s'; 
    $r = '\\1' . "\t" . '\\2' . "\t" . '\\3' . "\n"; 

    echo preg_replace($p, $r, $s); 
?> 

OUTPUT:

>php -q regex.php 
Cordless  9B12071R  CHARGER, 3.6V,LI-ION 
Cordless  9B12073R  CHARGER,NI-CD,FRAMER 
相關問題