Регулярное выражение для соответствия тексту, который не начинается с подстроки? - PullRequest
3 голосов
/ 21 марта 2010

У меня есть текст с именами файлов, разбросанных по всему.Имена файлов отображаются в тексте следующим образом:

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

Я хочу сопоставить имена файлов, которые не начинаются с usr.Я придумал (?<=\|).*\.txt(?=\|), чтобы соответствовать именам файлов, но это не исключает тех, которые начинаются с usr.Это возможно с регулярными выражениями?

Ответы [ 3 ]

7 голосов
/ 21 марта 2010
(?<=\|)(?!usr).*\.txt(?=\|)

Вы были почти там:)

Теперь у вас позитивный взгляд за спиной, позитивный и негативный взгляд.

1 голос
/ 21 марта 2010

с питоном

>>> import re
>>>
>>> x="""|test.txt|
... |usr01.txt|
... |usr02.txt|
... |foo.txt|
... """
>>>
>>> re.findall("^\|(?!usr)(.*?\.txt)\|$",x,re.MULTILINE)
['test.txt', 'foo.txt']
0 голосов
/ 21 марта 2010
grep -v "^|usr" file

awk '!/^\|usr/' file

sed -n '/^|usr/!p' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...