这里提到的蟒蛇强盗语言问题:
I made a Python 'robber's language' translating programme, is there another way?
很棒 - 而且我目前正在享受正则表达式解决方案 - 是否有类似的正则表达式解决方案将强盗语言放回原来的单词?
答案 0 :(得分:2)
你仍然可以使用一个模式来进行正则表达式替换,其中辅音后跟o
并且单独使用:
import re
print re.sub(r'([bcdfghjklmnpqrstvwxyz])o\1', r'\1', 'tothohisos isos fofunon')
输出
this is fun
答案 1 :(得分:0)
在o
附近重复辅音的任何内容都会被辅音本身取代:
re.sub(r'([bcdfghjklmnpqrstvwxyz])o\1', r'\1', inputtext)
[....]
是一个字符组,匹配作为该集合一部分的一个字符。此字符在捕获组中捕获((...)
括号)。接下来文字o
必须匹配。 \1
是一个反向引用,意味着与第一个捕获组完全相同的文本必须匹配。因此,它只匹配tot
或zoz
等字符序列。
然后我们重复使用相同的捕获组来定义替换;每个3个字符的匹配被第一个字符替换。
演示:
>>> import re
>>> inputtext = "tothohisos isos fofunon"
>>> re.sub(r'([bcdfghjklmnpqrstvwxyz])o\1', r'\1', inputtext)
'this is fun'