2011-02-06 112 views
-1

我不太熟悉正則表達式,但我知道我需要找到什麼 -正則表達式的問題!

我有一個很長的換行符分隔的數據列表,我需要刪除所有包含字符串的數據行「( V)」。這些線條的長度是可變的,所以我猜如果在兩個換行符之間選擇所有內容(如果裏面有一個(V)的話)?

+3

你使用什麼語言或工具? – 2011-02-06 18:29:44

回答

1

嘗試搜索正則表達式:

^.*\(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) 

根據你的語言,你可能需要添加分隔符,例如/和/或引用"周圍的正則表達式您可能需要啓用多行模式。

這裏是展示它的工作在線例如:Rubular

1

如果數據確實是相當大的,然後運行鍼對整個字符串中的一個正則表達式將是一個壞主意。取而代之的是,像這樣的Perl腳本,一個簡單的解決方案可以爲你工作:

open my $fh, '<', 'data.txt' or die $!; 
while (my $line = <$fh>) { 
    if ($line =~ m/\(V\)/) { 
     next; 
    } 
    print $line; 
} 
close $fh; 

這個腳本讀取數據文件在一次一行,並打印不包含線「(V)」到標準輸出。 (你顯然可以取代「打印」使用不同的數據處理任務)

1

使用UNIX命令grep,如果你有機會到這樣的系統。

$ grep -v '(V)' data.txt 

grep的含有data.txt中 「(V)」 的所有行相匹配,並且僅示出了線不匹配(-v)。