2013-05-16 2 views
0

다음 문제로 나를 도울 수 있는지 궁금합니다. RegEx를 사용하여 폴더 경로 내의 문자열을 찾으려고합니다. 예를 들어RegEx를 사용하여 폴더 경로에서 문자열 찾기

:

C:\Users\user\Documents\mystarfleet34academybadge 

내가 정규식 공식 및 출력 자바의 결과를 사용하여 그냥 "fleet34academy"를 찾아 싶습니다. 정규 표현식을 사용하는 것에 익숙하지 않기 때문에 지속적인 질문에 사과드립니다. 내가 분할을 사용으로 보았다하지만 난 그것을

+1

이 파일을 얻을시겠습니까 패턴을 찾기 위해라고? 아니면 그냥 문자열 이름? –

+0

순간에 나는 전체 폴더 이름을 "mystarfleet34academybadge"로 출력하지만 출력으로 "fleet34academy"를 좋아할 것입니다. – user2385671

+2

"fleet34academy"가 일치하는 부분은 무엇이며 나머지는 그렇지 않습니다. 이것은 좀 더 일반적인 규칙일까요? 아니면 단 하나의 사례입니까? (이 경우에는 정규 표현식이 필요하지 않습니다) – anana

답변

2

이 시도

감사를 작동시킬 수 없습니다 :

String pattern = ".*mystar(.*)badge"; 
System.out.println("C:\\Users\\user\\Documents\\mystarfleet34academybadge".replaceAll(pattern, "$1")); 

출력 :

fleet34academy 

업데이트

을,210
String pattern = "^.*mystar(fleet[0-9]*academy)badge.*$"; 
System.out.println("C:\\Users\\user\\Documents\\mystarfleet110academybadge".replaceAll(pattern, "$1")); 

출력 :

fleet110academy 
+0

+1 간단하고 좋은 – exexzian

+0

+1하지만 질문에 대한 질문은 문자열이 아니라 패턴을 찾지 않는 것이지, 그 정규 표현식이 제공 한 것입니다. * mystar (. *) 배지는 그의 폴더에서 작동합니다. 모든 폴더 이름이 경로에있을 수 있으며 경로에서 해당 문자열을 찾을 수 있습니다. 문자열은 항상 mystarbadge 사이 또는 mystar 전에 올 수 없습니다! – anshulkatta

+0

내가 RegEx를 사용하고자하는 이유는 숫자가 상수 변경이지만 숫자의 양쪽 문자열이 결코 변경되지 않는다는 것입니다. 예 : fleet34academy는 fleet86academy 또는 fleet109academy가 될 수 있습니다. – user2385671

0
public class Test { 
    public static void main(String args[]) { 
     String str = "C:\\Users\\user\\Documents\\mystarfleet34academybadge"; 
     System.out.println(str.contains("fleet34academy")); 
    } 
} 
0

확인이 조각

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

class New { 
public static void main (String [] args) 
{ 
     String str="fleet34academy"; 

     String path="C:\\Users\\user\\Documents\\mystarfleet34academybadge"; 

     Pattern p = Pattern.compile(str,Pattern.CASE_INSENSITIVE|Pattern.LITERAL); 
     Matcher m = p.matcher(path); 
     while (m.find()) 
     { 
      System.out.print("Start index: " + m.start()); 
      System.out.print(" End index: " + m.end()); 
      System.out.println(" Found: " + m.group()); 
     } 



} 
} 

우리는 java.util.regex의 패키지에 PatternMatcher 클래스가 있습니다.

Pattern에서 정적 메서드 컴파일을 사용하여 같은 문자열, 대소 문자를 구분하거나 대소 문자를 구분하지 않는 등의 속성을 입력하면 여기 docs을 확인할 수 있습니다.

Matcher 개체에서 우리는 패턴을 찾아야하는 String을 전달합니다.

m.find()

+1

'+'대신'|'가있는 패턴 플래그를 사용해야합니다. – melwil

+0

아, 네, 지금 고쳐 줘서 고마워. 고마워. – anshulkatta

관련 문제