我需要解析一句话: “爱丽丝是个男孩。”进入['爱丽丝','男孩']和 和“大象是哺乳动物”。进入['elephant','哺乳动物']。意思是我需要将字符串拆分为'is',同时删除'a / an'。 有一种优雅的方式吗?
答案 0 :(得分:0)
这个答案并没有使我们成为正则表达式,而是一种做事方式:
s = 'Alice is a boy'
s = s.split() # each word becomes an entry in a list
s = [word for word in s if word != 'a' and word !='an' and word !='is']
这样做的主要缺点是你需要在列表理解中列出你想要排除的每个单词。
答案 1 :(得分:0)
如果您坚持使用正则表达式,可以使用re.search
这样做:
print(re.search('(\w+) is [a|an]? (\w+)',"Alice is a boy.").groups())
# output: ('Alice', 'boy')
print(re.search('(\w+) is [a|an]? (\w+)',"An elephant is a mammal.").groups())
# output: ('elephant', 'mammal')
# apply list() if you want it as a list