【发布时间】:2020-06-17 16:05:09
【问题描述】:
import re
def find_string(file_name, word):
with open(file_name, 'r') as a:
for line in a:
line = line.rstrip()
if re.search("^{}$".format(word),line):
return True
return False
if find_string('/tmp/myfile', 'hello'):
print("found")
else:
print("not found")
我的文件:
hello world #does not match
hello #match
如果我删除 ^ 和 $ 那么它会匹配,但它也会匹配 "he","hel" 等。如果单行上有多个单词,我如何匹配确切的字符串?
【问题讨论】:
-
你能扩展你想要匹配的内容吗?如果您想匹配正好是
word的行,那么line.rstrip() == word就可以了。 -
使用单词边界
\bhello\b。请看demo -
这很好。您是否要匹配一行中的单个单词?如果您只是想在“hello world”中匹配字符串“hel”,那么它就在那里。这是一个适当的匹配。
-
尝试:
if re.search(r"\b{}\b".format(word),line):并注意正则表达式字符串之前的r,以确保正确解释反斜杠。 -
如果您不回答问题,我们无法解决此问题。