2009-12-07 6 views
1

내가 필요로하는 규칙 중 하나는 문자열의 마지막 모음 (aeiou)이 집합의 문자 앞에있는 경우 ('t', 'k', 's', ' tk '), 모음 바로 뒤에 :을 추가해야합니다. 의 (t, K, S, TK) 될 마지막 문자 (들) :정규 표현식 검색/대체 필요, 파이썬

그래서, 파이썬에서 나는 문자열 "orchestras" 내가 "orchestra:s"

편집으로 바뀝니다 규칙을 필요가있는 경우 문자열

+1

나는 대답이 없지만 이것에 대한 실제적인 적용은 궁금합니다. – StrixVaria

+0

'tk'는 (는) 문자입니까? –

답변

6
re.sub(r"([aeiou])(t|k|s|tk)([^aeiou]*)$", r"\1:\2\3", "orchestras") 
re.sub(r"([aeiou])(t|k|s|tk)$",   r"\1:\2", "orchestras") 

t/k/s/tk 다음에 다른 자음이있을 수 있는지 말하지 않습니다. 첫 번째 정규식은 더 이상 모음이 없으면이를 허용하므로 "주먹"을 "fi : st"로 변경합니다. 단어가 t/k/s/tk로 끝나야하는 경우 두 번째 정규식을 사용하면 "주먹"에 대해 아무 작업도 수행하지 않습니다.

0

아직 알지 못했다면 [python_root] /tools/scripts/redemo.py 좋은 테스트 영역입니다.

0

또 다른 대체 정규식에 걸릴 :이 사람은 기억 그룹을 사용하여 대체 할

re.sub("(?<=[aeiou])(?=(?:t|k|s|tk)$)", ":", "orchestras") 

필요가 없습니다.