Skip to main content
 首页 » 编程设计

python之我可以打印从多字符串正则表达式搜索中匹配的字符串格式吗

2025年05月04日31xxx_UU

在下面的代码中,我正在搜索字符串、十六进制和 ascii ....如果字符串匹配,则打印字符串匹配的文件。有没有办法打印匹配的字符串类型(十六进制、ascii 或字符串)?此外,我想考虑大小写和数字 [0-9]+。我不确定我是否可以将它添加到相同的正则表达式,或者添加另一个正则表达式行会更好:

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( "(%s|%s|%s)" % ( re.escape( userstring ), re.escape( userStrHEX ), re.escape( userStrASCII ) ) 
      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() 

请您参考如下方法:

这个怎么样?

for line in f.readlines(): 
    if userstring in line: 
        print 'User input in file: ' + os.path.join(root, file) 
        break 
    elif userStrHEX in line: 
        print 'HEX string in file: ' + os.path.join(root, file) 
        break 
    elif userStrASCII in line: 
        print 'ASCII string in file: ' + os.path.join(root, file) 
        break 

看看你的正则表达式(三个可能的词之一,没有真正的正则表达式特征),我会完全避免使用正则表达式。

您可以轻松添加更多功能:

    elif userstring.lower() in line.lower(): 
        print 'User input (case-insensitive) in file: ' + os.path.join(root, file) 
        break 

只需检查您的条件顺序以捕捉正确的大小写(即,如果您在区分大小写之前检查不区分大小写,则后者永远不会发生,等等)