RE 将每个单词与模式的一部分匹配
RE Match each word with a part of the pattern
我认为最好用一个例子来说明。
我有 RE 模式 choco_icecream = "(do|does) \w+ (loves|love|likes|like) (choco|chocolate) (ice-cream|icecream|ice cream)"
。
我想检查 example = "Does Jessica like Chocolate Icecream".lower()
是否匹配 choco_icecream
.
example
是choco_icecream
的匹配,但是我想知道example
的哪个词对应choco_icecream
的一个元素。
我想要一本字典。理想的输出将如下所示:{"(do|does)":"does", "\w+":"jessica", "(loves|love|likes|like)":"like", "(choco|chocolate)":"chocolate", "(ice-cream|icecream|ice cream)":"icecream"}
我怎样才能做到这一点?
我认为如果您只是稍微尝试一下这个以及文档,那么这一切都会很清楚。
import re
choco_icecream = "(do|does) (\w+) (loves|love|likes|like) (choco|chocolate) (ice-cream|icecream|ice cream)"
example = "Does Jessica like Chocolate Icecream".lower()
x = re.match(choco_icecream, example)
print(x)
print(x.groups())
输出:
<re.Match object; span=(0, 36), match='does jessica like chocolate icecream'>
('does', 'jessica', 'like', 'chocolate', 'icecream')
打印整个 match
对象会得到完整的匹配项,但是表达式中的每组括号都会创建一个新的“组”,并且这些组都会单独返回。
请注意,我修改了您的正则表达式,使名称也成为一个组。
我认为最好用一个例子来说明。
我有 RE 模式 choco_icecream = "(do|does) \w+ (loves|love|likes|like) (choco|chocolate) (ice-cream|icecream|ice cream)"
。
我想检查 example = "Does Jessica like Chocolate Icecream".lower()
是否匹配 choco_icecream
.
example
是choco_icecream
的匹配,但是我想知道example
的哪个词对应choco_icecream
的一个元素。
我想要一本字典。理想的输出将如下所示:{"(do|does)":"does", "\w+":"jessica", "(loves|love|likes|like)":"like", "(choco|chocolate)":"chocolate", "(ice-cream|icecream|ice cream)":"icecream"}
我怎样才能做到这一点?
我认为如果您只是稍微尝试一下这个以及文档,那么这一切都会很清楚。
import re
choco_icecream = "(do|does) (\w+) (loves|love|likes|like) (choco|chocolate) (ice-cream|icecream|ice cream)"
example = "Does Jessica like Chocolate Icecream".lower()
x = re.match(choco_icecream, example)
print(x)
print(x.groups())
输出:
<re.Match object; span=(0, 36), match='does jessica like chocolate icecream'>
('does', 'jessica', 'like', 'chocolate', 'icecream')
打印整个 match
对象会得到完整的匹配项,但是表达式中的每组括号都会创建一个新的“组”,并且这些组都会单独返回。
请注意,我修改了您的正则表达式,使名称也成为一个组。