2017-05-02 44 views
0

內刪除線我有一個文件,像這樣的一些原始數據:記事本++宏特定範圍

RMR,IV,0000771702159,PO,189.63,193.5,3.87 
REF,DP,00081 
REF,MC,543908537 
REF,19,27 
REF,ST,0078742064345 
DTM,097,20170130 
RMR,IV,0000771702454,PO,202.5,202.5 
REF,DP,00064 
REF,MR,0020 
REF,PO,5654748341 
REF,MC,936705865 
REF,19,18 
REF,ST,0605388000255 
DTM,097,20170302 
RMR,IV,0000771702644,PO,36.26,37,0.74 
REF,DP,00090 
REF,MC,505304198 
REF,19,26 
REF,ST,0078742076270 
DTM,097,20170322 
RMR,IV,0000771702645,PO,107.31,109.5,2.19 
REF,DP,00081 
REF,MC,505303606 
REF,19,27 
REF,ST,0078742076270 
DTM,097,20170322 

我所希望做的是刪除任何包含行「REF數據的「塊」, DP,00064" 文本中的每一個塊從與RMR開始,並用同DTM開頭的行結束的行的塊 內

所以想落得除去下面的線之間的部分:

RMR,IV,0000771702159,PO,189.63,193.5,3.87 
REF,DP,00081 
REF,MC,543908537 
REF,19,27 
REF,ST,0078742064345 
DTM,097,20170130 
----------------------------------------- 
RMR,IV,0000771702454,PO,202.5,202.5 
REF,DP,00064 
REF,MR,0020 
REF,PO,5654748341 
REF,MC,936705865 
REF,19,18 
REF,ST,0605388000255 
DTM,097,20170302 
----------------------------------------- 
RMR,IV,0000771702644,PO,36.26,37,0.74 
REF,DP,00090 
REF,MC,505304198 
REF,19,26 
REF,ST,0078742076270 
DTM,097,20170322 
RMR,IV,0000771702645,PO,107.31,109.5,2.19 
REF,DP,00081 
REF,MC,505303606 
REF,19,27 
REF,ST,0078742076270 
DTM,097,20170322 

和最後的結果應該是:

RMR,IV,0000771702159,PO,189.63,193.5,3.87 
REF,DP,00081 
REF,MC,543908537 
REF,19,27 
REF,ST,0078742064345 
DTM,097,20170130 
RMR,IV,0000771702644,PO,36.26,37,0.74 
REF,DP,00090 
REF,MC,505304198 
REF,19,26 
REF,ST,0078742076270 
DTM,097,20170322 
RMR,IV,0000771702645,PO,107.31,109.5,2.19 
REF,DP,00081 
REF,MC,505303606 
REF,19,27 
REF,ST,0078742076270 
DTM,097,20170322 

伊夫搜查,發現瞭如何刪除,如果是在開始,但在我的情況下,其在中間

任何幫助表示讚賞什麼即時搜索。

回答

0

無需宏,你可以用一個正則表達式來完成。

  • 按Ctrl + H^
  • 查找內容:^RMR(?:(?!DTM).)*\RREF,DP,00064\R(?:(?!DTM).)*DTM.+?\R
  • 替換:EMPTY
  • 更換所有

檢查Regular expression. matches newline

說明:

^    : begining of line 
RMR    : literally RMR 
(?:    : begin non capture group 
    (?!DTM)  : negative lookahead, make sure we don't have DTM 
    .    : any character 
)*    : non capture group repeated 0 or more times 
\R    : any kind of linebreak 
REF,DP,00064\R : literally REF,DP,00064 followed by a line break 
(?:(?!DTM).)* : same as above 
DTM.+?   : literally DTM followed 1 or more charcaters non greedy 
\R    : any kind of linebreak 

結果爲給定的例子:

RMR,IV,0000771702159,PO,189.63,193.5,3.87 
REF,DP,00081 
REF,MC,543908537 
REF,19,27 
REF,ST,0078742064345 
DTM,097,20170130 
RMR,IV,0000771702644,PO,36.26,37,0.74 
REF,DP,00090 
REF,MC,505304198 
REF,19,26 
REF,ST,0078742076270 
DTM,097,20170322 
RMR,IV,0000771702645,PO,107.31,109.5,2.19 
REF,DP,00081 
REF,MC,505303606 
REF,19,27 
REF,ST,0078742076270 
DTM,097,20170322 
+0

爲什麼downvote?這個答案有什麼問題? – Toto

+0

令人驚歎的哇!非常感謝你!並感謝您的解釋! – jmoreno5

+0

@ jmoreno5:不客氣,很高興幫助。 – Toto