问题是我试图匹配一个单词(两边都有空格),如果它存在的话。
我工作的代码(至少大部分)是:
import re, os
str1 = "the host offered $ rec*ting advice"
str1 = re.sub('[*]', '(.*?)', str1)
str1 = re.sub('[$]', '(.*?)', str1)
str1 = str1.lower()
print str1
previous_dir = os.getcwd()
os.chdir('testfilefolder')
for filename in os.listdir('.'):
with open(filename) as f:
file_contents = f.read().lower()
output = re.search("%s" % str1, file_contents)
if output:
print (" Match found in " + filename))
因此,例如,如果我有字符串"the host has offered some recruiting advice"
并在字符串上进行搜索,"the host offered some $ rec*ting advice"
它将不起作用 - 由于美元符号(由(.*?)
."the host offered $ rec*ting advice"
有效 - 所以我可以匹配 1 个单词(如果存在) - 看起来(.*?)
应该匹配一个字符,每个单词中至少有一个字符,所以我想这就是它起作用的原因。我不确定是否(.*?)
正确使用但这是我研究后迄今为止我所做的最好的工作。对此的任何建议将不胜感激。请注意,上面我(.*?)
在文本中似乎显示出某种(.*?)
标签,只是格式化字符串之间(.*?)
。
但是,我想匹配 0 或 1 个单词。我之前发现过类似于 \bs+\b 的东西(我不太记得了,也找不到了),但无论如何都无法让它工作。我知道 \b 应该匹配一个可能存在的单词两侧的空字符串。
如果在其他地方问过这个问题,我表示歉意,但似乎我找到的所有东西(我仍然可以找到并且能够开始工作)正在寻找一个特定的词 - 但是我想看看是否只有 0 或 1 存在: