正则表达式匹配不以子字符串开头的文本?

时间:2010-03-21 05:23:46

标签: regex

我的文件名分散在整个文件中。文件名出现在文本中,如下所示:

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

我希望匹配不以usr开头的文件名。我提出(?<=\|).*\.txt(?=\|)来匹配文件名,但不会排除以usr开头的文件名。这是否可以使用正则表达式?

3 个答案:

答案 0 :(得分:7)

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

你差不多在那里:)

现在你有一个积极的外观,以及积极和消极的前瞻。

答案 1 :(得分:1)

使用python

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

答案 2 :(得分:-1)

grep -v "^|usr" file

awk '!/^\|usr/' file

sed -n '/^|usr/!p' file