Regex 正则表达式查找包含特定字符的行并删除该行

Regex 正则表达式查找包含特定字符的行并删除该行,regex,Regex,我有一个文本文件,其中有很多字符条目,一行接一行。 我想找到所有以:开头的行,然后删除所有这些行 正则表达式的作用是什么 -广告简单到: ^:: 如果逐行读取文件,则不需要[\r\n]*部分。正则表达式不会“执行”任何操作。它们只匹配文本 您需要的是一些工具,这些工具使用正则表达式来标识行,然后对这些工具应用一些命令 其中一个工具是sed(还有awk和许多其他工具)。您可以这样使用它: sed -e "/^::/d" < input.txt > output.txt 如果您没有s

我有一个文本文件,其中有很多字符条目,一行接一行。 我想找到所有以
开头的行,然后删除所有这些行

正则表达式的作用是什么

-广告

简单到:

^::
如果逐行读取文件,则不需要
[\r\n]*
部分。

正则表达式不会“执行”任何操作。它们只匹配文本

您需要的是一些工具,这些工具使用正则表达式来标识行,然后对这些工具应用一些命令

其中一个工具是
sed
(还有
awk
和许多其他工具)。您可以这样使用它:

sed -e "/^::/d" < input.txt > output.txt

如果您没有sed或grep,请查找此项并替换为空字符串:

^::.*[\r\n]

谢谢你的指点:

下面的事情对我有用。在“::”之后,文本文件中可能存在任何字符,因此我给出:

^:[a-zA-Z0-9我把所有标点符号都放在这里了]*$


-这是我在C中的贡献:

文本流:

string stream = :: This is a comment line
语法:

Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline);
用法:

Console.WriteLine(commentsExp.Replace(stream, string.Empty));
或者,如果我想简单地获取一个包含注释的文本文件,并生成一个没有注释行的精确副本,我可以使用简单但有效的type和findstr命令行工具组合:

type commented.txt | findstr /v /R "^::" > uncommented.txt

使用哪种编程语言?我认为这可能是最好的答案,但值得一提的是,并非所有版本的sed都有-I选项。在您的示例中,您不需要匹配初始^::之后的所有内容,您必须“解释”所有的角色都是因为你在结尾放了一美元。如果他使用的是像grep这样的面向行的工具,你是对的。但是他仍然没有说。@goldenmean,是什么阻止你使用.*而不是怪物角色类?我同意,可能最好使用单线选项并将.*添加到表达式中。单线?为什么要让点与换行符匹配?如果您一次读取一行,将不会有任何新行匹配,并且如果您在处理之前将整个文件读入内存,点星将在第一次应用时消耗文件的其余部分。我认为您忘记了Regex.Replace函数。。。这实际上“做”了一些事情,不是吗?@dconduc:正如你所说的:函数做了一些事情(这是我提到的工具之一)。正则表达式本身仍然只匹配一些文本。函数的语义定义了如何处理匹配的文本。
Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline);
Console.WriteLine(commentsExp.Replace(stream, string.Empty));
type commented.txt | findstr /v /R "^::" > uncommented.txt