我的文件名分散在整个文件中。文件名出现在文本中,如下所示:
|test.txt|
|usr01.txt|
|usr02.txt|
|foo.txt|
我希望匹配不以usr
开头的文件名。我提出(?<=\|).*\.txt(?=\|)
来匹配文件名,但不会排除以usr
开头的文件名。这是否可以使用正则表达式?
答案 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