在两个Python字符串中匹配字符
我想在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'])
我觉得正则表达式不太适合解决这个问题。