Regex 正则表达式问题!
我不太熟悉正则表达式,但我知道我需要找到什么-Regex 正则表达式问题!,regex,string,variables,newline,Regex,String,Variables,Newline,我不太熟悉正则表达式,但我知道我需要找到什么- 我有一个由换行符分隔的长数据列表,我需要删除包含字符串“(V)”的所有数据行。这些行的长度是可变的,因此我想如果其中有一个(V),那么应该在两个换行符之间选择所有内容。尝试搜索此正则表达式: ^.*\(V\).*$ 说明: ^ start of line .* any characters apart from new line \( open parenthesis (escaped to avoid special behaviour
我有一个由换行符分隔的长数据列表,我需要删除包含字符串“(V)”的所有数据行。这些行的长度是可变的,因此我想如果其中有一个(V),那么应该在两个换行符之间选择所有内容。尝试搜索此正则表达式:
^.*\(V\).*$
说明:
^ start of line
.* any characters apart from new line
\( open parenthesis (escaped to avoid special behaviour)
V V
\) close parenthesis (escaped to avoid special behaviour)
.* any characters apart from new line
$ end of line (not strictly need here, included only for clarity)
^起跑线
*除新行以外的任何字符
\(开括号(转义以避免特殊行为)
V V
\)右括号(转义以避免特殊行为)
*除新行以外的任何字符
$end of line(此处不严格需要,仅为清晰起见)
根据您的语言,您可能需要在正则表达式周围添加分隔符,如/
和/或引号“
,并且您可能需要启用多行模式
下面是一个在线示例,演示了它的工作原理:如果数据确实很大,那么针对整个字符串运行一个正则表达式将是一个坏主意。相反,像下面的Perl脚本这样的简单解决方案可能适合您:
open my $fh, '<', 'data.txt' or die $!;
while (my $line = <$fh>) {
if ($line =~ m/\(V\)/) {
next;
}
print $line;
}
close $fh;
打开我的$fh,如果您有权访问此类系统,请使用UNIX命令grep
$ grep -v '(V)' data.txt
Grep匹配data.txt中包含“(V)”的所有行,并仅显示不匹配的行(-V
)。您使用的语言或工具是什么?长列表有多长?它是否足够小,可以容纳几倍的可用物理内存?如果是,它不是“长”你可以在内存中很好地处理这些数据。如果没有,那么是时候使用逐行处理了。(对于某些语言,例如Perl,逐行处理最有意义。)