2009-02-04 293 views

回答

0

就这么简单:

^:: 
1
^::.*[\r\n]* 

如果您正在阅读的文件中的行由行你就不需要在[\r\n]*部分。

8

正则表达式不会“做”任何事情。他们只匹配文字。

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

一个这样的工具是sed(还有awk等等)。你会使用这样的:

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

的部分“/^::/”告诉sed适用以下命令来启动与所有行“::”和“d”仅仅意味着“删除行”。

或者最简单的解决方案(其中我的大脑并没有产生一些奇怪的原因):

grep -v "^::" input.txt > output.txt 
+0

我想你已经忘记了Regex.Replace函数......那实际上“做”了某些事情,不是吗? – Dscoduc 2009-02-05 20:36:36

+0

@Dcoduc:正如你所说:函数做了一些事情(我提到的工具之一)。正则表达式本身仍然只匹配一些文本。这是函数的语义,它定义了匹配文本要做什么。 – 2009-02-05 20:56:20

+0

感谢您的澄清...我站在更正... – Dscoduc 2009-02-05 21:10:34

0

如果你没有的sed或者grep的,觉得这与空字符串替换:

^::.*[\r\n] 
0

感谢您的指点:

如下的东西为我工作。后 “::” 任何字符在文本文件possiblly现在让我放弃:

^:: [A-ZA-Z0-9我把所有的标点符号这里] * $

〜AD

0

这是我在C#中的贡献:

文本流:

string stream = :: This is a comment line 

语法:

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

用法:

Console.WriteLine(commentsExp.Replace(stream, string.Empty)); 

或者,如果我想简单地采取包括注释的文本文件,并生成精确副本没有注释行,我可以使用的那种类型的简单而有效的组合findstr命令行工具:

type commented.txt | findstr /v /R "^::" > uncommented.txt 
相关问题