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

4 投票
3 回答
5252 浏览
提问于 2025-04-18 16:38

我想在Python中找出两个字符串集合之间的共同字符。我希望能用Python的正则表达式来实现这个功能(我对正则表达式不太了解,所以这可能是个学习的好机会)。

比如说,如果first_word = "peepa"second_word = "poopa",我希望返回的结果是:"pa",因为在这两个变量中,共同的字符是p和a。目前我在按照文档学习如何使用re模块,但我似乎还没有掌握基本概念。

有没有什么建议可以帮助我解决这个问题呢?

3 个回答

2

使用正则表达式

这个问题特别适合用集合来解决。不过,你问的是“如何仅用Python的正则表达式来做到这一点”。

这里有个开始的例子:

>>> import re
>>> re.sub('[^peepa]', '', "poopa")
'ppa'

上面的代码使用正则表达式,从“poopa”中去掉了所有不在“peepa”里的字母。(你会发现它保留了重复的字母,而集合就不会这样做。)

更详细一点来说,re.sub是用来根据正则表达式进行替换的。[peepa]这个正则表达式表示“peepa”中的任意一个字母。而[^peepa]则表示任何不在“peepa”里的字母。所有符合这个正则表达式的内容都会被替换成空字符串"",也就是说被删除了。最后剩下的就是那些共同的字母。

4

使用集合。把一个字符串转换成集合,会得到一个只包含独特字母的可遍历对象。然后你可以找出这两个集合之间的交集。

match = set(first_word.lower()) & set(second_word.lower())
9

这听起来像是你想找出两个字符串中共同字符的问题。最快的方法就是这样做:

>>> set(first_word).intersection(second_word)
set(['a', 'p'])

我觉得正则表达式不太适合解决这个问题。

撰写回答