在Python2.7.3中使用正则表达式搜索文本并输出匹配项

在Python2.7.3中使用正则表达式搜索文本并输出匹配项,python,regex,text-files,Python,Regex,Text Files,我正努力完成标题所说的一切。该程序旨在从指定路径读取.txt文件,并匹配代码中指定的术语。这就是我到目前为止所做的: import re source = open("C:\\test.txt", "r") lines = [] for line in source: line = line.strip() lines.append(line) if re.search('reply', line): print 'found: ', line 如您

我正努力完成标题所说的一切。该程序旨在从指定路径读取.txt文件,并匹配代码中指定的术语。这就是我到目前为止所做的:

import re

source = open("C:\\test.txt", "r")
lines = []

for line in source:
    line = line.strip()
    lines.append(line)
    if re.search('reply', line):
        print 'found: ', line
如您所见,我使用re.search指定术语“reply”,但这将我限制为一个术语。我知道有一种方法可以指定要搜索的单词列表或词典,但我的尝试失败了。我认为有可能创建一个列表,其中包含以下内容:

keywords = ['reply', 'error', 'what'] 
。。。但是,尽管我在这个网站上读到了一些东西,但我似乎无法将其正确地整合到代码中。非常感谢您的任何建议或帮助

另外,如果我想使搜索区分大小写,我是否可以使用

"(.*)(R|r)eply(.*)"
。。。在我要查找的术语列表中?

单向:

import re
source = open("input", "r")
lines = []
keywords = ['reply', 'error', 'what']
# join list with OR, '|', operators
# re.I makes it case-insensitive
exp = re.compile("|".join(keywords), re.I)
for line in source:
    line = line.strip()
    lines.append(line)
    if re.search(exp, line):
        print 'found: ', line
单向:

import re
source = open("input", "r")
lines = []
keywords = ['reply', 'error', 'what']
# join list with OR, '|', operators
# re.I makes it case-insensitive
exp = re.compile("|".join(keywords), re.I)
for line in source:
    line = line.strip()
    lines.append(line)
    if re.search(exp, line):
        print 'found: ', line

使用re.search,可以传递单个字符串,但可以指定相当复杂的模式。请参阅上的文档,其中有一节介绍正则表达式语法

事实上,你的问题中有答案。。。R | R搜索R或R,因此reply | error | what搜索“reply”、“error”或“what”

另外,如果我想使搜索区分大小写,我是否可以使用。。。 *答复*

不需要。*位,它可能会使代码变慢。re.search函数在字符串中的任何位置查找匹配项。R | reply将查找'reply'或'reply',它与'reply'或'reply'不匹配

如果需要不区分大小写的搜索,可以将flags=re.IGNORECASE选项传递给re.search。例如:


使用re.search,可以传递单个字符串,但可以指定相当复杂的模式。请参阅上的文档,其中有一节介绍正则表达式语法

事实上,你的问题中有答案。。。R | R搜索R或R,因此reply | error | what搜索“reply”、“error”或“what”

另外,如果我想使搜索区分大小写,我是否可以使用。。。 *答复*

不需要。*位,它可能会使代码变慢。re.search函数在字符串中的任何位置查找匹配项。R | reply将查找'reply'或'reply',它与'reply'或'reply'不匹配

如果需要不区分大小写的搜索,可以将flags=re.IGNORECASE选项传递给re.search。例如:


对于PS,我假设您的意思是使其不区分大小写。如果是这样,一个更简单的方法是str.lower。对于PS,我想你的意思是使它不区分大小写。如果是这样,一个更简单的方法是str.lower。谢谢!从这件事中学到很多:谢谢!从这一点中学到了很多:谢谢:在.py文件中添加关于此的注释!谢谢:在.py文件中添加关于此的评论!