2013-10-17 2 views
2

나는이 정규 표현식을악센트 문자와 정규 표현식

emozioni emozioniamo felicità felicitàs 

는 첫 번째와 세 번째 단어와 일치해야합니다. 대신 첫 번째와 마지막에 일치합니다. 나는 그것이 악센트 문자 때문이라고 생각한다. 나는이 다른 시도 :

(\b)(emozioni|gioia|felicità\s)(\b) 

을하지만 그 후 다른 단어가있는 경우에만 "FELICITA"일치. 이 기타의

emozioni emozioniamo felicità felicitàs 

하지 : :이 컨텍스트에있는 경우 따라서 특정되는 경우에만

emozioni emozioniamo felicitàs felicità 

그래서의 시작 부분에 프랑스어 (에 악센트 문자에 대한 기사를 발견했습니다 단어) here, 나는 두 번째 대답을 따라 갔다. 누구든지 더 나은 솔루션을 알고 있다면 대단히 환영합니다.

+0

을 :) Valerio, "이탈리아어"솔루션을 가지고 있습니까? – softwareplay

+1

Hanno già dato delle soluzioni, mi chiedevo perchè 배열에서 비 분할은 정규 표현식을 사용하여 정규식을 사용하지 않습니다. –

답변

1

단어 경계 \b 작품, 그래서 당신은 à 같은 accentued 문자 후 \b을 넣을 수 없습니다.

당신은 내다 사용하여 귀하의 경우 문제를 해결할 수 :

felicità(?=\s|$) 

(\s 대신에 또는 \W @Sniffer 제안을하지만 같은 일치하는 위험을 가지고 : felicitàà)

+0

두 경우 모두 작동하지 않는 것 같습니다. – softwareplay

+0

@softwareplay 내가 게시 한 데모 링크를 확인하십시오, 괜찮습니다. –

1

는 다음과 같은 대안을 시도해보십시오

\b(emozioni|gioia|felicità)(?=\W|$) 

이이 나열된 단어 중 하나를 일치만큼 그 단어 중 하나가 아닌 단어 문자 \W 또는 끝 문자열 $ 뒤에있다. 단지 \w 문자 클래스에있는 문자, 즉 [0-9a-zA-Z_]

Regex101 Demo

+1

@softwareplay ** 만약 당신이 **'\ b'을 사용하도록 강요되지 않는다면 걱정하지 마십시오. –

+0

그것은 일했다! Thnks 많이. – softwareplay

+0

@softwareplay 도움을 드리겠습니다. 반갑습니다. –

관련 문제