我正在尝试在Python中打印两组字符串之间的共享字符,我这样做是希望实际上找到如何使用除了python正则表达式之外的任何东西(我不知道正则表达式所以这可能是是学习它的好时机。)
因此,如果first_word = "peepa"
和second_word = "poopa"
我希望返回值为:"pa"
因为在两个变量中,共享的字符是p和a。到目前为止,我正在关注如何使用re模块的文档,但我似乎无法掌握这个的基本概念。
关于如何解决这个问题的任何想法?
答案 0 :(得分:8)
这听起来像是一个问题,你想找到两个字符串之间的字符交集。最快的方法是:
>>> set(first_word).intersection(second_word)
set(['a', 'p'])
我认为正则表达式不适合这个问题。
答案 1 :(得分:4)
使用套装。将字符串转换为集合将返回具有唯一字母的iterable。然后你可以检索两组的交集。
match = set(first_word.lower()) & set(second_word.lower())
答案 2 :(得分:1)
这个问题是为套装量身定制的。但是,你要求“如何只使用python正则表达式来执行此操作。”
这是一个开始:
>>> import re
>>> re.sub('[^peepa]', '', "poopa")
'ppa'
上面使用正则表达式从“poopa”中删除每个尚未出现在“peepa”中的字母。 (如你所见,它会留下重复的字母,这些字母不会发生。)
更详细地说,re.sub
根据正则表达式进行替换。 [peepa]
是一个正则表达式,表示任何字母peepa
。正则表达式[^peepa]
表示不在peepa
中的任何内容。与此正则表达式匹配的任何内容都将替换为空字符串""
,即它将被删除。剩下的只是常见的字母。