我正在寻找能够区分查询中子字符串的正则表达式。一个实际的例子是对电影数据库的查询,目标是返回结果:
# query 1
title:movie one year:2018 rating:10
# query 2
year:2019 rating:20
对于第一个示例,我希望有一个正则表达式能够识别标题,年份和等级,即<电影>电影, 2018 和 10 。
我实现了一个接近但不能完全满足要求的解决方案:
title:\w+
year:\w+
rating:\w+
这适用于由单个单词组成的查询(例如title:movie),但不适用于包含多个实体的查询(例如title:movie one)。有什么办法可以做到这一点?
答案 0 :(得分:1)
您可以使用非捕获组来匹配“标签”,然后使用捕获组来匹配标签之间的所有字符(而不仅仅是单词字符,以便捕获空格等)。例如:
import re
s = 'title:movie one year:2018 rating:10'
matches = re.match(r'(?:title:)(.*)?(?:year:)(.*)?(?:rating:)(.*)?', s).groups()
print(matches)
# ('movie one ', '2018 ', '10')
答案 1 :(得分:-1)
像这样吗?
import re
string='Movie One'
pattern='[\w\s]*'
result=re.match(pattern,string)
print(result)
结果:
<_sre.SRE_Match object; span=(0, 9), match='Movie One'>