Python正则表达式不捕获单个字符串 更大的名字列表=['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.compiler'\b{}\b'.format'|'.joinname_list,re.IGNORECASE 印刷搜索 对于较大的名称列表中的名称: found_them=search_people.searchnames,re.IGNORECASE | re.X 印刷品名称 如果找到它们: 打印“我找到这个人:{}”。formatfound_them.group 其他: 打印“没有找到它们”

Python正则表达式不捕获单个字符串 更大的名字列表=['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.compiler'\b{}\b'.format'|'.joinname_list,re.IGNORECASE 印刷搜索 对于较大的名称列表中的名称: found_them=search_people.searchnames,re.IGNORECASE | re.X 印刷品名称 如果找到它们: 打印“我找到这个人:{}”。formatfound_them.group 其他: 打印“没有找到它们”,python,regex,python-3.x,regex-group,Python,Regex,Python 3.x,Regex Group,我遇到的问题是,正则表达式根本找不到名称,一直在使用else: 我尝试过重新搜索、重新查找、重新查找、重新匹配、重新完全匹配等。它们都没有返回任何结果。它找到任何东西的唯一方法是使用re.finditer,但这不允许我使用.group re.compile的输出为re.compile'\\bJim | Bob | Fred | Cam\\b',re.IGNORECASE 我对它进行了测试,它看起来很正常,但在python中没有 以下是我的控制台输出: 我遗漏了什么吗 编译正则表达式的第二个参数

我遇到的问题是,正则表达式根本找不到名称,一直在使用else: 我尝试过重新搜索、重新查找、重新查找、重新匹配、重新完全匹配等。它们都没有返回任何结果。它找到任何东西的唯一方法是使用re.finditer,但这不允许我使用.group

re.compile的输出为re.compile'\\bJim | Bob | Fred | Cam\\b',re.IGNORECASE

我对它进行了测试,它看起来很正常,但在python中没有

以下是我的控制台输出:


我遗漏了什么吗

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

您尝试执行的操作不需要正则表达式搜索。您可以实现如下相同的目标

搜索结果=[] targets=setnames\u列表 对于名称列表中的名称: 如果目标中有名称: search_result.appendname printf'找到的名称:{name}' 其他: printf'未找到名称:{name}' 打印搜索结果 使用列表理解的较短版本

搜索结果=[setbigger\u列表中名称的名称(如果名称位于目标中)]
我迟到了一点,但我以前也遇到过同样的问题。看起来你正在使用pycharm,如果你检查自动完成功能,如果你没有关闭它,它会说:

pattern.searchself、string、pos、endpos

您不需要在.search部分中添加标志,而需要在re.compile部分中添加标志。因为re.compile实际上接受标志

pycharm auto complete中的外观:

关于compilepattern,标志

所以看起来有点像这样:

search_people=re.compiler'\b{}\b'.format'|'.joinname_list,re.IGNORECASE | re.X 对于较大的名称列表中的名称: 找到\他们=搜索\人。搜索姓名 印刷品名称 如果找到它们: 打印“我找到这个人:{}”。formatfound_them.group 其他: 打印“没有找到它们”
尝试从搜索中删除标志。\u people.search调用不区分大小写的搜索最好使用正则表达式。对于区分大小写的匹配,您的代码可以工作,但是我建议使用一个集合来更快地查找。如果要查找的名称集称为targets,那么matches=[name for name in bigger_list_of name of_name If name in targets]非常好。嘿,谢谢你的帮助。列表只是一些更复杂的东西的占位符,但工作方式相同。这样解释问题更容易。@cco按照您的建议进行了更改。酷。请注意,不需要将较大的_列表_作为一个集合;你只是在迭代,没有查找。制作一套虽然花费不多,但毫无帮助。最大的成功在于targets=setnames\u list,因为这会将查找从On更改为O1。