0
모음 뒤에 오는 경우 문자열에서 'h'를 제거해야합니다.정규식 대체 정규식 문자
단어를 찾는 것이 문제가되지 않지만 'h'를 제거하는 것은 원래 모음이 필요하기 때문입니다. 한 정규 표현식에서이 작업을 수행 할 수 있습니까?
모음 뒤에 오는 경우 문자열에서 'h'를 제거해야합니다.정규식 대체 정규식 문자
단어를 찾는 것이 문제가되지 않지만 'h'를 제거하는 것은 원래 모음이 필요하기 때문입니다. 한 정규 표현식에서이 작업을 수행 할 수 있습니까?
개 이상의 h
을 가질 수 있습니다 경우 모음에서 후, 그러나
re.sub(r"([a-zA-Z]*?)(?<=a|e|y|u|o|a)h([a-zA-Z]*)",r"\1\2",s)
을 할 수있는 하나의
(?<=a|e|y|u|o|a)h
그리고 긍정적 인 lookbehind에게 것 모음 후 h
일치하는 정규식 문자열은 정규식이 동적 일치 그룹을 지원하지 않기 때문에 여러 번 반복해야합니다.
import re
s = "bahtbaht"
s1 = s
while True:
s1 = re.sub(r"([a-zA-Z]*?)(?<=a|e|y|u|o|a)h([a-zA-Z]*)",r"\1\2",s)
if len(s1) == len(s):
break
s = s1
print(s1)
repl
import re
def subit(m):
match, = m.groups()
return match
s = "bahtbaht"
print(re.sub(r"([a-zA-Z]*?)(?:(?<=a|e|y|u|o|a)h|$)",subit,s))
훨씬 더 간단 대답 함수를 사용하여보다 적절한 형태에서
(10), 감사 @tobias_k하기 "의 re.sub (R`잘못 무엇
re.sub(r"([aeiou])h", r"\1", s, flags = re.I)
([AEIOU]) h ", r"\ 1 ", s)'? 잘 작동하는 것 같습니다. 또한're.I' 플래그를 추가 할 수 있습니다. –
@tobias_k 아무 것도 잘못 대답을 편집합니다, 감사합니다! – buld0zzr
아 ... 그게 잘못되고 있어요. 고마워. – Horseshaq