用于查询实体的正则表达式

时间:2019-03-11 19:58:44

标签: python regex

我正在寻找能够区分查询中子字符串的正则表达式。一个实际的例子是对电影数据库的查询,目标是返回结果:

# 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)。有什么办法可以做到这一点?

2 个答案:

答案 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'>