Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将匹配除what';括号中的s_Regex - Fatal编程技术网

Regex 将匹配除what';括号中的s

Regex 将匹配除what';括号中的s,regex,Regex,我有一个文件布局,我想删除除括号内数字以外的所有内容。布局的一个示例是: C10438     03  EXT-OBLN-ASSN           PIC X(05).               03  EXT-OWN-NAME            PIC X(40). 我曾经 (^[^\(]*) 将所有内容匹配到开括号。然而当我尝试 (^[^\(\d{2}\)]*) 我只在一行的开头得到了空格,我不知道为什么 使用此模式 .*?(\(\d\d\))|.* 并替换为w/$1

我有一个文件布局,我想删除除括号内数字以外的所有内容。布局的一个示例是:

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

(^[^\(]*) 
将所有内容匹配到开括号。然而当我尝试

(^[^\(\d{2}\)]*) 
我只在一行的开头得到了空格,我不知道为什么

使用此模式

.*?(\(\d\d\))|.*
并替换为w/
$1


或者也可以使用此模式删除括号

.*?\((\d\d)\)|.*
最简单的方法是:

\(\p{N}+\)


这将捕获任何括号(
\(
\)
)和其中任何数字(
\p{N}+
)。

我假设您希望在记事本++中实现这一点

注意:
(^[^\(\d{2}\)]*)
包含一个逻辑错误:
\(\d{2}\)
应该是一个字符序列(如
(22)
),但被放入一个否定字符类中,其中每个符号(除第一个
^
)都被视为一个单独的符号。因此,
(^[^\(\d{2}\)]*)
匹配并捕获到一个组中所有不是
,一个数字,
{
}
,从字符串/行的开始,零次或多次

您需要一个正则表达式,该正则表达式将匹配任何字符、从行首(
^
)到
后跟一个或多个数字(
\d+
)的任何出现次数(
*
)以及除换行以外的任何数量的字符

使用

并替换为
$1


如果不是Notepad++,请确保传递
/m
多行修饰符,以便
^
可以匹配一行的开头,而不是整个字符串。

Unicode类别类在某些正则表达式中不可用。您尝试的部分问题是方括号之间的内容。这些是字符类的文字字符。
^.*\((\d+)\).*