匹配两个Python字符串中的字符

时间:2014-08-09 05:41:57

标签: python regex

我正在尝试在Python中打印两组字符串之间的共享字符,我这样做是希望实际上找到如何使用除了python正则表达式之外的任何东西(我不知道正则表达式所以这可能是是学习它的好时机。)

因此,如果first_word = "peepa"second_word = "poopa"我希望返回值为:"pa" 因为在两个变量中,共享的字符是p和a。到目前为止,我正在关注如何使用re模块的文档,但我似乎无法掌握这个的基本概念。

关于如何解决这个问题的任何想法?

3 个答案:

答案 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中的任何内容。与此正则表达式匹配的任何内容都将替换为空字符串"",即它将被删除。剩下的只是常见的字母。