問題は、存在する場合、単語 (両側にスペース) を一致させようとしていることです。
私が(少なくともほとんど)作業しているコードは次のとおりです。
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 つの単語に一致できます -(.*?)
は、各単語に少なくとも 1 つの文字が含まれる 1 つの文字に一致するはずなので、それが機能する理由だと思います。(.*?)
使用するのが正しいかどうかはわかりませんしかし、それは私が研究の結果これまでに取り組んできた最高のものです. それについてのアドバイスは非常に高く評価されます. 上記(.*?)
のテキストには、何らかの形で(.*?)
何らかのタグがあり、文字列をフォーマットするだけであることが示されているように見えることに注意してください.の間(.*?)
。
ただし、0または1単語に一致させたいです。以前に \bs+\b に似たものを見つけたことがあります (よく思い出せず、もう一度見つけることもできません) が、とにかく動作させることができませんでした。\b は、単語が存在する可能性のある両側の空の文字列に一致することになっていることを知っています。
この質問が他の場所で尋ねられた場合はお詫びしますが、私が見つけたすべてのもの (私がまだ見つけて動作させることができたもの) は特定の単語を探しているようです - ただし、0 または 1 しか存在しないかどうかを確認しています: