这个正则表达式似乎不适用于Python

时间:2015-12-06 13:18:39

标签: python regex

我正在尝试匹配用户密码组合,我尝试了以下内容。

combination='User'+' '+'Password'
import re
print(combination)
with open("file.txt",'rb') as file:
    if re.search('^{0}$'.format(re.escape(combination)), file.read(), flags=re.M):
        print('yes')
    else:
        print "no"

我的file.txt内容:

User Password
Sam  Somepass
Ron  Ssss

当我运行此代码时,我收到消息"no"。我无法弄明白为什么。

编辑: NamePassword.

之间只有一个空格

我的目标是搜索从其他文件收到的确切字符串User Password

3 个答案:

答案 0 :(得分:1)

import re
combination='User Password'
with open("file.txt",'rb') as file:
    if re.search('.*{0}.*'.format(combination), file.read(), flags=re.M):
        print 'yes'
    else:
        print 'no'

答案 1 :(得分:1)

你的代码很好。只需检查User Password之前和之后没有空格。

否则,您可以将此正则表达式与\s*一起使用,以匹配任何空格,制表符或换行符。

例如:

import re
user = 'Sam'
password = 'Somepass'
with open("test.txt",'r') as file:
    if re.search('\s*{0}\s+{1}\s*'.format(user, password), file.read(), flags=re.M):
        print 'yes'
    else:
        print 'no'

立即查看:here

答案 2 :(得分:0)

我刚刚运行了该代码,以下是它的问题。

  1. 假设您正在运行python 3,则需要使用括号" no"。

  2. 除此之外" b"用于打开文件的标志将其设置为二进制模式。在python 3中,我得到错误" TypeError:不能在类字节对象上使用字符串模式"我建议删除它,因为您正在操作文本文件。

  3. 以下代码在python 3.3.4中为我工作

    combination='User'+' '+'Password'
    import re
    print(combination)
    with open("file.txt",'r') as file:
        if re.search('^{0}$'.format(re.escape(combination)), file.read(),flags=re.M):
            print('yes')
        else:
            print("no")