我正在尝试编写一个函数来清理Web应用程序中的unicode输入,我正在尝试重现本页末尾的PHP函数:http://www.iamcal.com/understanding-bidirectional-text/
我在python中寻找相当于PHP的preg_match_all。 RE函数findall返回没有位置的匹配,而search只返回第一个匹配。是否有任何函数可以返回每个匹配项以及文本中的相关位置?
使用字符串abcdefa
和模式a|c
,我希望获得类似[('a',0),('c',2),('a',6)]
谢谢:)
答案 0 :(得分:14)
尝试:
text = 'abcdefa'
pattern = re.compile('a|c')
[(m.group(), m.start()) for m in pattern.finditer(text)]
答案 1 :(得分:0)
我不知道如何让re.findall
为您执行此操作,但以下情况应该有效:
re.findall
查找所有匹配的字符串。str.index
查找re.findall
返回的所有字符串的关联索引。 但是,执行此操作时要小心:如果字符串在不同的位置有两个确切的子字符串,那么re.findall
将返回两者,但您需要告诉str.index
您正在寻找第二次出现或nth
出现的字符串。否则,它将返回您已有的索引。我能想到的最好方法是维护一个字典,其中包含re.findall
结果的字符串作为键,索引列表作为值希望这有帮助