2016-12-08 1 views
0

나는 아랍어 단어의 주요 줄기를 찾으려고 노력하고 있는데, 사용자가 단어를 입력하려고하면 프로그램은 단어에서 단어를 제거하려고 시도 할 것이고 단어의 나머지 부분은 لاعب이 될 것이고 줄기의 나의 명부에 주요 줄기 لعب를 찾아내는 것을 시도하십시오, 나는 정규 표현식 또는 어떤 통보로 그것을 할 수있다. 감사합니다아랍어 텍스트와 함께 정규 표현식을 사용하는 방법

+0

정규식이 단어와 문자에 적용됩니다. 유니 코드/UTF-8을 지원하는 정규 표현식을 사용할 언어가 있는지 확인하십시오. 그 다음에는 정규 문자열과 정규 정규식이됩니다. 정규식이 로케일과 무관하므로 아무 것도 변경되지 않습니다. – Acewin

+2

Java [Pattern] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)은 많은 유니 코드 스크립트, 블록 그리고이를 위해 활용할 수있는 카테고리 나는 그 질문이 너무 광범위하다고 생각한다.당신이하려는 것을 보여주는 몇 가지 코드와 기대되는 결과물을 추가하십시오. – Mena

+0

올바른 문자 인코딩을 사용하는 한 영어와 같은 방식으로 정규식을 사용하여 패턴을 식별 할 수 있어야합니다. –

답변

1

요즘 대부분의 정규식 엔진은 자바를 포함하여 유니 코드를 지원합니다.

String text = "لاعبون"; 
text.replaceAll("\\u0648\\u0646", ""); 

기본적으로, 당신이해야 할 모든 특정 유니 코드를 대체 당신이 빈 문자열로 제거하려는 코드 포인트 : 당신의 특별한 경우를 들어, 다음과 같이합니다. 완료 및 완료.

+0

이것은 지나치게 단순화 된 것입니다. OP는 처리해야 할 텍스트가 많으며 단어 끝에있을 때만 ""을 제거하려고합니다. 또한이 질문은 그의 질문의 절반 만 대답하려고 시도합니다. 그는 낱말의 나머지에서 줄기 ""를 추출하고 싶다. 후자의 경우, 그는 일부 alif는 줄기의 일부이고 일부 alif는 그렇지 않기 때문에 모든 alif 문자를 제거 할 수 없습니다. –

0

인코딩 된 "코드 포인트"를 사용해야합니까? this works :

정규식 : ون(.*)

교체 : $1

-1

당신은 많은 변수 설정을해야합니다 설명하고 문제. 모든 접두사, 접미사를 알고 있습니까? 그 목록을 만들 수 있습니까?

위의 두 가지를 모두 수행 할 수 있다면 목록을 통해 적절한 단어를 테스트하고 문자를 제거 할 수 있습니다.

이 UTF-8 문자 표현으로 문자를 변환 비슷한 질문 (How to ban words with diacritics using a blacklist array and regex?)

에 이전 답변을 참조하십시오 (나는 이것이 당신에게 몇 가지 문제를 저장합니다 생각합니다.) 그리고 간단한 정규식을 사용하여

.

(나는 지금 나 자신이를 변환 할 수 없기 때문에)/ون = x021-X023 (16 비트 변환)

귀하의 작품 정규식에 밀려이>의/^ x021-X023 통과 말할 수 있습니다/g

은 단어에서 x021-x023을 잘라냅니다.

정상적인 문자 집합으로 되돌립니다.

그리고 단정 한 단어가 있습니다.

0

여기에 각 glyf 예를 들어 영어에 비해 더 큰 차이가없는 뜯 코드를 유지하기 때문에

true 
لاعب 
false 
0

를 인쇄합니다 전체 예제

import java.util.regex.Matcher; 

import java.util.regex.Pattern; 


public class regex { 

public static void main(String args[]) { 
    Pattern p = Pattern.compile("(.*)" + "ون"); 
    Matcher m = p.matcher("لاعبون"); 
    Matcher m2 = p.matcher("يييي"); 
    System.out.println(m.matches()); 
    System.out.println(m.group(1)); 
    System.out.println(m2.matches()); 

} 

에게}입니다. 당신은 단지 3 문자의 뿌리와 일치하는 패턴을 기록한 다음 다른 패턴/템플릿으로 변환하는 구문을 작성해야합니다.

관련 문제