2014-10-22 9 views
1

У меня возникла проблема с использованием regex.replace с акцентированными словами - я использую замену regex, потому что мне нужно заменить полные, а не частичные строки (см. «Grund» в списке).Regex заменить на символы с акцентом - AutoHotKey

Но AHK, кажется, игнорирует акцентированные символы в начале и конце слов (в середине это прекрасно). Кто-нибудь сталкивался с этой проблемой раньше?

Я придумал следующее «исправление», добавив символ подчеркивания перед символами с акцентом после того, как после символа с акцентом, но он все еще не работает правильно, когда в слове появляется акцент (см. «Mémit» и mmit «). Может ли кто-нибудь помочь? Я уверен, что есть намного более простой способ справиться с акцентами!

Cheers!

^+f2:: 
data = 
(
testé = WORD1 
kragén = WORD2 
und = WORD3 
gürtel = WORD4 
émail = WORD5 
élder = WORD7 
messé = WORD8 
émit = WORD9 
èmit = WORD10 
testè = WORD11 
) 
text = 
(
testé kragén und gürtel émail nomâtch élder messé émit émit èmiter émita mémit mèmit testé testè grund 
) 


text := RegExReplace(text,"(\w+é)\W|$","$1_ ") 
text := RegExReplace(text,"\W(é\w+)"," _$1") 
text := RegExReplace(text,"(\w+è)\W|$","$1_ ") 
text := RegExReplace(text,"\W(è\w+)"," _$1") 


loop, parse, data, `n, `r 
{ 
stringsplit, term, a_loopfield, =, %a_space% 
text := RegExReplace(text, "\b" . term1 . "\b", term2) 
} 


stringreplace, text, text, _, , all 
stringreplace, text, text, _ , , all 


msgbox, % text 
return 

ответ

2

Вы должны быть в состоянии соответствовать символы Unicode с помощью \p{L}:

([\p{L}\w]+) 

Пример:

http://regex101.com/r/wD3wI1/1

+0

Спасибо, но это для поиска и замены скрипта, поэтому мне нужно точное совпадение каждого отдельного слова, а не всеохватывающего кода регулярного выражения. – user3842077

+0

Для индивидуального символа, такого как 'é', вы, вероятно, можете использовать' \ x (шестнадцатеричный код символа) '-' ([\ xE9]) 'и т. Д. –

0

мне удалось заставить его работать:

^+f2:: 
data = 
(
testé = WORD1 
kragén = WORD2 
und = WORD3 
gürtel = WORD4 
émail = WORD5 
élder = WORD7 
messé = WORD8 
émit = WORD9 
èmit = WORD10 
testè = WORD11 
) 

data := RegExReplace(data, "è", "00egrave") 
data := RegExReplace(data, "é", "00eacute") 
data := RegExReplace(data, "ü", "00uuml") 

text = 
(
testé kragén und gürtel émail nomâtch élder messé émit émit èmiter émita mémit mèmit testé testè grund 
) 

text := RegExReplace(text, "é", "00eacute") 
text := RegExReplace(text, "ê", "00egrave") 
text := RegExReplace(text, "ü", "00uuml") 

loop, parse, data, `n, `r 
{ 
stringsplit, term, a_loopfield, =, %a_space% 
text := RegExReplace(text, "\b" . term1 . "\b", term2) 
} 

text := RegExReplace(text, "00egrave", "è") 
text := RegExReplace(text, "00eacute", "é") 
text := RegExReplace(text, "00uuml", "ü") 

msgbox, % text 
return