我正在使用以下正則表達式同時搜索3種不同的字符串格式。此外,我使用re.IGNORECASE
來匹配大小寫字符串。但是,當我執行搜索時(例如'locality'),我可以獲得'localit','locali','local'等等的字符串匹配。我想匹配確切的單詞(例如'locality')。正則表達式不區分大小寫的搜索
此外,如果字符串字符之間有空白(例如,'l ocal i ty'
),我想忽略它。我還沒有找到允許我這樣做的re
方法。我嘗試使用re.ASCII
,但是出現錯誤:「... ascii無效!」任何援助表示讚賞。
elif searchType =='2':
print " Directory to be searched: c:\Python27 "
directory = os.path.join("c:\\","Python27")
userstring = raw_input("Enter a string name to search: ")
userStrHEX = userstring.encode('hex')
userStrASCII = ' '.join(str(ord(char)) for char in userstring)
regex = re.compile(r"(%s|%s|%s)" % (re.escape(userstring), re.escape(userStrHEX), re.escape(userStrASCII))re.IGNORECASE)
for root,dirname, files in os.walk(directory):
for file in files:
if file.endswith(".log") or file.endswith(".txt"):
f=open(os.path.join(root, file))
for line in f.readlines():
#if userstring in line:
if regex.search(line):
print "file: " + os.path.join(root,file)
break
else:
#print "String NOT Found!"
break
f.close()
請向我們展示一些具體的三個用戶字符串以及您正在搜索的字符串的示例。另請說出您獲得的內容以及您想要的內容喜歡得到。 – NPE 2011-04-27 21:10:14
如果你想忽略字符之間的空格,那麼你可能需要在你要搜索的原始字符串中的每個字符之間插入一個'\ s *'。 – 2011-04-27 21:24:41
請修正您的源代碼格式 - 每行前四個空格並適當縮進。 – jsw 2011-04-27 23:48:02