Python正则表达式不捕获单个字符串

标签 python regex python-3.x regex-group

bigger_list_of_names = ['Jim', 'Bob', 'Fred', 'Cam', 'Reagan','Alejandro','Dee','Rana','Denisha','Nicolasa','Annett','Catrina','Louvenia','Emmanuel','Dina','Jasmine','Shirl','Jene','Leona','Lise','Dodie','Kanesha','Carmela','Yuette',]
name_list = ['Jim', 'Bob', 'Fred', 'Cam']
search_people = re.compile(r'\b({})\b'.format(r'|'.join(name_list)), re.IGNORECASE)
print(search_people)

for names in bigger_list_of_names:
    found_them = search_people.search(names, re.IGNORECASE | re.X)
    print(names)
    if found_them:
        print('I found this person: {}'.format(found_them.group()))
    else:
        print('Did not find them')

我遇到的问题是正则表达式根本找不到名称并不断命中 else: 我已经尝试过re.search , re.findall , re.find , re.match , re.fullmatch等等。他们都返回None 。它找到任何东西的唯一方法是如果我使用 re.finditer但这不允许我使用 .group() .

re.compile 的输出是 re.compile('\\b(Jim|Bob|Fred|Cam)\\b', re.IGNORECASE)

我在 https://regex101.com/ 上测试过它( /image/lL3mh.png ) 看起来它可以工作,但在 python 中却不起作用。

这是我的控制台输出: /image/kxdcc.png

我错过了什么吗?

最佳答案

已编译正则表达式的第二个参数是字符串中开始搜索的位置,而不是与正则表达式一起使用的标志(第三个也是可选参数,是搜索的结束位置)。请参阅 Regular expression objects 的文档了解详情。
如果要指定不区分大小写的搜索,请将 re.IGNORECASE 传递给 re.compile。对于此正则表达式,不需要 re.X

关于Python正则表达式不捕获单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961248/

相关文章:

python - 如何从网格数组导出 x、y、z 坐标?

python - 在列表的排列中应用排名

python - 在Python中向基类添加实例变量

python - 组合重新标记 re.IGNORECASE、re.MULTILINE 和 re.DOTALL

python - python操作数据库报错

python-3.x - 导入 matplotlib 出现问题

python - 尝试使用 websocket-client 建立 https 连接时出现 SSL 错误

javascript - 用于测试日期格式的正则表达式

javascript - 正则表达式逗号分隔的电话号码

regex - 使用正则表达式验证 HTML5 模式属性中的英国国民保险号/NINO