我不太熟悉正則表達式,但我知道我需要找到什麼 -正則表達式的問題!
我有一個很長的換行符分隔的數據列表,我需要刪除所有包含字符串的數據行「( V)」。這些線條的長度是可變的,所以我猜如果在兩個換行符之間選擇所有內容(如果裏面有一個(V)的話)?
我不太熟悉正則表達式,但我知道我需要找到什麼 -正則表達式的問題!
我有一個很長的換行符分隔的數據列表,我需要刪除所有包含字符串的數據行「( 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)
根據你的語言,你可能需要添加分隔符,例如/
和/或引用"
周圍的正則表達式您可能需要啓用多行模式。
這裏是展示它的工作在線例如:Rubular
如果數據確實是相當大的,然後運行鍼對整個字符串中的一個正則表達式將是一個壞主意。取而代之的是,像這樣的Perl腳本,一個簡單的解決方案可以爲你工作:
open my $fh, '<', 'data.txt' or die $!;
while (my $line = <$fh>) {
if ($line =~ m/\(V\)/) {
next;
}
print $line;
}
close $fh;
這個腳本讀取數據文件在一次一行,並打印不包含線「(V)」到標準輸出。 (你顯然可以取代「打印」使用不同的數據處理任務)
使用UNIX命令grep
,如果你有機會到這樣的系統。
$ grep -v '(V)' data.txt
grep的含有data.txt中 「(V)」 的所有行相匹配,並且僅示出了線不匹配(-v
)。
你使用什麼語言或工具? – 2011-02-06 18:29:44