2012-01-12 3 views
0

자바에서 정규 표현식 사용에 익숙하지 않습니다. 내가 문자열 this/is/a/file!/path자바에서 정규식을 사용하여 특정 문자열 패턴을 검색 하시겠습니까?

substring와 지금

indexOf이있는 경우 나는 /! inbetween 나타나는 이름의 파일을 찾을 수 있습니다하지만 난 등의 작업을 훨씬 쉽게 사용하여 정규 표현식에 있어야합니다 확신합니다.

정규 표현식을 사용하여 예제를 제공 할 수 있습니까?

+0

이 문제의 해결 방법은 가장 간단하지만 가장 빠릅니다. 문자열의'file' 부분과 다른 것을 읽고 싶지 않으면 RegEx를 생각하지 마십시오. – adarshr

+0

Google은 친구입니다. http://adocs.oracle.com/javase/tutorial/essential/regex/ –

+0

@adarshr, 귀하의 의견을 보내 주셔서 감사합니다;) – Johnydep

답변

-1

자바를 사용하는 가장 간단한 방법은 String.matches 방법을 사용하는 것입니다 :

boolean matches = "abc".matches("[a-z]+"); 

true를 얻을 것입니다 그.

두 번째 방법은 특정 정규식 패턴을 여러 번 사용해야하는 경우 유용합니다. 당신은 그것을 컴파일하고 다시 사용할 수 있습니다 :이 작업을 수행해야합니다 ... 당신이 1 그룹 찾기 위해 정규 사용할 수 있습니다

Pattern pattern = Pattern.compile("[a-z]+"); 
Matcher matcher = pattern.matcher("abc"); 
boolean matches = matcher.matches(); 
+0

String.matches는 전체 문자열에만 일치합니다. 문제는 경로의 일치하는 하위 문자열을 추출하는 것입니다. –

0

뭔가를해야만 .*/([^!]*)!.*

(괄호 사이의 부분을, 0 번째 그룹은 전체 일치)

이 솔루션을 테스트하지 않았습니다 ...

0

당신은 만들 수 있습니다 여기

이 Matcher를

에서 봐 그룹과 더 복잡한 작업

Pattern pattern = Pattern.compile(yourRegex); 
Matcher matcher = pattern.matcher(yourText); 
while(matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

을 사용할 수 있습니다 Pattern 객체를 정규 표현식으로 만든 다음 그것으로부터 pa까지 matcher 객체를 만든다. String을 rse하십시오.

String regex = ".*/(.*)!"; 

Pattern p = Pattern.compile (regex); 

Matcher m = p.matcher(StringToBeMatched); 

if (m.find()) { 

    String filename = m.group (1); 
} 
+0

이 솔루션을 테스트하지 않았습니까? 코드는 정확하지만 정규식은 컴파일되지 않습니다. –

+0

는 정규식을 수정했습니다. –

관련 문제