import re
tests = [
'we:aanyoh',
'hiru:atghigu',
'yo:ubeki',
'yo:ubekiki',
'yo:ubek'
]
for word in tests:
s = re.sub(r'([^aeiou]*[aeiou][^aeiou]*):((?:[^aeiou]*[aeiou]){3}[^aeiou]*)$', r'\1\2', word)
print '{} > {}'.format(word, s)
import re
tests={
'matches':[
'we:aanyoh',
'hiru:atghigu',
'yo:ubeki'
],
'no match':[
'wz:ubeki',
'we:a anyoh',
'yo:ubek',
'hiru:atghiguu'
]
}
for k, v in tests.items():
print k
for e in v:
s=re.sub(r'(?i)(\b\w+[aeiou]):((?:[aeiou][^aeiou\s\W]*){3}\b)', r'\1\2', e)
print '\t{} > {}'.format(e, s)
不确定是否要完全忽略辅音;此正则表达式将。其他方面与杰夫的相似
你不是有太多的括号(和其他额外的东西)吗?公司名称:
您声明您的目标是一个单词而不是一行,因此首先设置锚点以仅处理单词:
接下来,一个冒号前接一个
^{pr2}$[aeiou]
,在冒号后面的部分还有两个[aeiou]
。我假设与案件无关?在Demo
(注意
[^aeiou\W]
的用法是辅音字母、数字和u,但不是其他字符Demo。)Python演示:
印刷品:
这将只处理带有单个冒号的单词。如果要匹配具有多个冒号但具有相同模式的单词,请更改LH模式以使字符类包含一个冒号和一个不是
\b
的锚点。在示例:
(?i)(^[\w:]+[aeiou]):((?:[aeiou][^aeiou\s\W]*){3}\b)
相关问题 更多 >
编程相关推荐