2013-05-21 4 views
0

"내가 좋아하는 나라 :) : D : 나 자신을 좋아한다 : P -_-.", 이모티콘을 제외한 모든 것을 제거하는 방법 - 결과 문자열에 텍스트가 없어야합니까? 입력 문자열 또는 텍스트는 모든 유형이 될 수 있습니다.정규식 : 이모티콘을 제외한 모든 것을 제거합니다. 방법?

내가

Regex.Replace(str, "[A-Za-z]", ""); 

정규식

를 사용하고 있지만, 그것은 또한 "에서" "P", "D를 제거 : D : P"웃는. 정규식은 무엇이 될 것입니까?

미리 감사드립니다.

+0

와우 ..이 냄새는 매우 복잡합니다. –

+0

IMHO, 이모티콘 (예 : 배열)의 * 데이터베이스 *가 있어야하며 문자열에 각 이모티콘이 포함되어 있으면 테스트를 반복하면됩니다. 나는 정규 표현식의 큰 팬이다. 그러나 나는 이것이 이것의 경우라고 생각하지 않는다. –

+0

모두 유지하고 싶습니까? http://en.wikipedia.org/wiki/List_of_emoticons – I4V

답변

0

이모티콘이 너무 많아서 좋습니다. 매우 길고 복잡한 정규 표현식으로 끝나지 만. 이 경우 대체 후 2 개의 '손상된'이모티콘 만 관리한다고 생각합니다. 이런 경우 경우에 따라서,이 작업을해야합니다 :

[ABCE-OQ-Za-oq-z]|(?<!:)D|(?<!:)[Pp] 

ABC에이 일반 expresssion 일치, O에 E의 범위 다음은 오와에서에서 일치 소문자를위한 Z에 대한 Q의 ragne q부터 z까지. 정규식의 핵심 부분은 일치하는 char 앞에 콜론이없는 경우에만 D, P 및 p와 일치한다는 것입니다. 이 기능을 lookaround라고합니다 (또는 정확한 사용 사례 인 lookbehind).

관련 문제