我有一个文件布局,我想删除除括号内的数字之外的所有内容。布局的一个例子是:正则表达式将匹配除括号内的所有内容外
C10438 03 EXT-OBLN-ASSN PIC X(05).
03 EXT-OWN-NAME PIC X(40).
我用
(^[^\(]*)
一切匹配的开括号。但是,当我尝试
(^[^\(\d{2}\)]*)
我只得到在行的开始的空白处,我不知道为什么!
我有一个文件布局,我想删除除括号内的数字之外的所有内容。布局的一个例子是:正则表达式将匹配除括号内的所有内容外
C10438 03 EXT-OBLN-ASSN PIC X(05).
03 EXT-OWN-NAME PIC X(40).
我用
(^[^\(]*)
一切匹配的开括号。但是,当我尝试
(^[^\(\d{2}\)]*)
我只得到在行的开始的空白处,我不知道为什么!
我假设你想在Notepad ++中实现这个功能。
注:(^[^\(\d{2}\)]*)
包含逻辑错误:\(\d{2}\)
被认为是一个序列字符的(如(22)
),但被置于其中的每个符号(比第一^
其他)被视为一否定的字符类作为一个单独的符号。因此,(^[^\(\d{2}\)]*)
匹配并捕获从字符串/行的开始起不是(
,数字,{
,2
,}
,)
零次或多次的所有组。
你需要一个正则表达式,将匹配任何字符,从线(^
)开始任何出现的次数(.*
)到(
跟着一个或多个数字(\d+
),然后接着用)
任何任何字符的数量,但换行符。
使用
^.*\((\d+)\).*
而且随着$1
取代。
如果它不是记事本+ +,请确保您通过/m
MULTILINE修改,这样可以^
匹配行的开头,而不是整个字符串。
Unicode类别类在某些正则表达式中不可用。 –
您的尝试的部分问题是方括号之间的东西。这些是字符类的* literal *字符。 – shawnt00