python regex - 字符串中唯一模式的总数

时间:2017-08-08 18:57:21

标签: python regex string

如果这是重复的话,请告诉我,但我只看到很多简单的方法来解决我在两个子字符串之间定位唯一实例总数的问题:' Ha'和' ha'

以下是我的代码,其中包含示例文本:

import re
def ha_counter(laughing):
    if not laughing: 
        return 0
    else:
        return len(re.findall(r'Ha',r'ha'))

如果字符串输入为空,则返回0,否则提供每个子字符串出现的次数。

Test.assert_equals(ha_counter(""), 0)
Test.assert_equals(ha_counter("hahahahaha"), 1)
Test.assert_equals(ha_counter("hahahahahaHaHaHa"), 2)

1 个答案:

答案 0 :(得分:0)

这可以使用否定前瞻来完成:

re.findall(r"Ha(?!.*Ha)","hahahahahaHaHaHa")
Out[5]: ['Ha']

re.findall(r"ha(?!.*ha)","hahahahahaHaHaHa")
Out[6]: ['ha']
#combine the two together with or
re.findall(r"(ha(?!.*ha)|Ha(?!.*Ha))","hahahahahaHaHaHa")
Out[7]: ['ha', 'Ha']

https://regex101.com/r/bk8v1s/1