2010-03-21 123 views
3

我有散佈在整個文件名稱的文本。文件名出現在這樣的文字:正則表達式匹配不以子串開頭的文本?

|test.txt| 
|usr01.txt| 
|usr02.txt| 
|foo.txt| 

我想匹配不usr啓動文件名。我想出了(?<=\|).*\.txt(?=\|)以匹配文件名,但它不排除以usr開頭的那些文件名。這是正則表達式可能嗎?

回答

7
(?<=\|)(?!usr).*\.txt(?=\|) 

你幾乎有:)

現在你有一個積極的回顧後,和一正一負前瞻。

+0

我掙扎了一會兒,只用一個後視與此..訣竅是使用組合。先生,幹得好。 – Gishu 2010-03-21 09:03:25

1

與Python

>>> import re 
>>> 
>>> x="""|test.txt| 
... |usr01.txt| 
... |usr02.txt| 
... |foo.txt| 
... """ 
>>> 
>>> re.findall("^\|(?!usr)(.*?\.txt)\|$",x,re.MULTILINE) 
['test.txt', 'foo.txt'] 
-1
grep -v "^|usr" file 

awk '!/^\|usr/' file 

sed -n '/^|usr/!p' file 
相關問題