2012-06-12 5 views
-3

가능한 중복 :정규식에서 "?"문자를 어떻게 일치시킬 수 있습니까? 그 자체?

String domain = "www.example.com"; 

내가 자바

에서 분할 기능을 사용하고있는 단어 "예"를 추출하려면 :

regular expression for DOT

내가 문자열을 말해봐

String[] keys = domain.split("."); 
String result = keys[1]; 

분명히 잘못되었습니다. "." 어떤 문자와도 일치하기 때문에 잘못된 정규 표현식입니다.

특별히 "."문자와 일치하는 이스케이프 시퀀스는 무엇입니까?

이 질문은 사소한 것처럼 보이지만 빠른 참조 나 이전 답변을 찾을 수없는 것 같습니다. 감사. 같은처럼 탈출하여

+0

자바 정규 표현식 탈출 점을 [DOT에 대한 정규 표현식]의 – sp00m

+1

가능한 중복 (http://stackoverflow.com/questions/ 3862479/점에 대한 정규 표현식). 또한 [유사] (http://stackoverflow.com/questions/6122675/how-do-you-write-a-regular-expression-that-allows-the-special-character-dot) 및 [유사] (http : //stackoverflow.com/questions/3674930/java-regex-meta-character-and-ordinary-dot). – Mac

+1

어쩌면 당신은 몇 가지 기본 사항을 읽고 싶을 것입니다 : [정규식에 대해 절대적으로 모든 프로그래머가 알아야 할 것] (http://wp.me/p2pTzU-4) – stema

답변

2

당신은 Pattern.quote를 사용하여 리터럴 문자열을 정규 표현식을 얻을 수있다().

Pattern.quote (".")는 "\\"으로 평가됩니다.

이 경우 \\을 사용하는 것이 더 명확 할 것입니다.

7

\\. 
+0

정규 표현식에서'.'는'\로 이스케이프 처리됩니다. .'; 그러나 Java에서'\'는 특수 문자 (아이러니 컬하게 도피하기 위해)와 같이 이스케이프되어야하므로 - \\.' – amaidment

4

사용 \\.을 따른다. 당신은 그것을 벗어날 필요가 있습니다.

+0

당신은 두 개의 \\ java가 필요합니다. –

+0

@ JigarJoshi : 방금 편집 중이었습니다. – RanRag

+0

나는 단 하나의 \ 그것이 쓴 것을 보았고, 그것은 갱신되었다. –

2

. 앞에는 \\이라는 접두사를 붙일 수 있습니다. 따라서 \\.을 사용하십시오. 리터럴 문자열 \\은 단일 백 슬래시입니다. 정규식에서 백 슬래시는 이스케이프 문자이기도합니다. 정규 표현식 \\은 단일 백 슬래시와 일치합니다.

0

\\.을 사용하거나 대괄호 [.]을 사용하여 . 문자를 이스케이프 할 수 있습니다.

따라서 코드가됩니다 :

String[] keys = domain.split("\\."); // or domain.split("[.]"); 
String result = keys[1]; 
0

또는 당신은 탈출하지 않고 dot를 포함하는 클래스를 만들 수 있습니다

[.] 
관련 문제