正则表达式匹配没有前一个字符串的字符串

2024-05-19 17:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python解析一些包含多行的文件,并使用re.findall()执行regex。你知道吗

只要字符串“no foo”不在“bar”前面,我就尝试用字符串“bar”匹配行。换句话说-匹配任何“bar”,但不匹配“no foo bar”。如果“bar”出现在“no foo bar”之外,那么它应该匹配。你知道吗

输入:

1. candy bar 1
2. no bar stool
3. no foo bar here
4. foo barred
5. still no foo bar.
6. foo bar!
7. foobar!
8. tricky no foo bar but has bar again

期望输出:

1. candy bar 1
2. no bar stool
4. foo barred
6. foo bar!
7. foobar!
8. tricky no foo bar but has bar again

这类似于我一直尝试但没有成功的表达:

(^|[^no foo ])bar

代码:

patterns = ["XXX", "(^|[^no foo ])bar"]
joinedpatterns = "|".join(patterns)
for line in lines:
   for match in re.findall(joinedpatterns, line):
       print 'found "%s"' % str(match)

Tags: no字符串refoobarpatternsbuthas