2016-02-19 226 views
1

我有一個文件佈局,我想刪除除括號內的數字之外的所有內容。佈局的一個例子是:正則表達式將匹配除括號內的所有內容外

C10438     03  EXT-OBLN-ASSN           PIC X(05).    
           03  EXT-OWN-NAME            PIC X(40). 

我用

(^[^\(]*) 

一切匹配的開括號。但是,當我嘗試

(^[^\(\d{2}\)]*) 

我只得到在行的開始的空白處,我不知道爲什麼!

+0

您的嘗試的部分問題是方括號之間的東西。這些是字符類的* literal *字符。 – shawnt00

回答

3

我假設你想在Notepad ++中實現這個功能。

注:(^[^\(\d{2}\)]*)包含邏輯錯誤:\(\d{2}\)被認爲是一個序列字符的(如(22)),但被置於其中的每個符號(比第一^其他)被視爲一否定的字符類作爲一個單獨的符號。因此,(^[^\(\d{2}\)]*)匹配並捕獲從字符串/行的開始起不是(,數字,{,2,},)零次或多次的所有組。

你需要一個正則表達式,將匹配任何字符,從線(^)開始任何出現的次數(.*)到(跟着一個或多個數字(\d+),然後接着用)任何任何字符的數量,但換行符。

使用

^.*\((\d+)\).* 

而且隨着$1取代。

this demo

如果它不是記事本+ +,請確保您通過/m MULTILINE修改,這樣可以^匹配行的開頭,而不是整個字符串。

2

使用此圖案

.*?(\(\d\d\))|.* 

和替換瓦特/ $1
Demo


或去除括號爲好,使用這種模式

.*?\((\d\d)\)|.* 

Demo

2

最簡單的方法是:

\(\p{N}+\) 

https://regex101.com/r/aH2vK5/1

此捕獲任何括號(\(\)),並在它的任何數量的數字(\p{N}+)。

+0

Unicode類別類在某些正則表達式中不可用。 –

相關問題