2010-03-21 105 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 
相关问题