2009-02-04 288 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 
相關問題