python - 为什么加入列表必须位于非捕获组中才能使正则表达式能够解释它?
问题描述
所以我正在尝试构建一个正则表达式,它搜索出现的数字,后跟空格,后跟许多可能的关键词之一(test_cases
在这种情况下由 表示)。
下面的第一个正则表达式成功地做到了,但是我对它为什么起作用感到困惑。我对捕获组的理解是,它们允许您在组上放置量词,还有助于指定返回的数据。为什么此示例需要在非捕获组中才能正确处理?
test_string = "251 to 300 Vitality"
test_cases = ["Damage", "Pods", "Chance", "Vitality"]
print(re.findall(r'\d+\s(?:{})$'.format('|'.join(test_cases)), test_string)) # works
print(re.findall(r'\d+\s({})$'.format('|'.join(test_cases)), test_string)) # doesn't work
print(re.findall(r'\d+\s{}$'.format('|'.join(test_cases)), test_string)) # doesn't work
输出:
['300 Vitality']
['Vitality']
['Vitality']
解决方案
推荐阅读
- laravel - 从 Guzzle6 Payum Paypal Laravel 返回无效异常
- python - 如何正确过滤 django OR 查询
- c# - 如何在不缩放主摄像头的情况下在 Unity for mobile 中创建可缩放的画布图像?
- excel - 通过 ID 码从大型数据库中提取数据
- ldap - 有没有办法剖析 LDAP 消息以将用户名/密码传递给 API?
- heroku - Heroku 抛出“密码不正确或丢失”。尝试安装时出错。本地没有发生
- javascript - Yii 中的自定义类别字段
- r - 如何使用 {highcharter) 创建一个“mapbubble”地图?
- python - Python urllib.request.urlopen 在不断变化的网站上
- javascript - Tampermonkey/GreaseMonkey 自动点击按钮