2015-01-02 2 views
0

이 코드는 자바 스크립트에서 작동합니다. 자바에서 비슷한 것을 할 수 있습니까? (문자열에서 와일드 카드 값 가져 오기)문자열 Java에서 와일드 카드의 값을 가져 오는 방법은 무엇입니까?

var a = "HI MY NAME IS BOB" 

    var b = /HI MY NAME IS (.*)/ 

    alert("HI " + b.exec(a)[1]) 
+0

질문이 명확하지 않습니다. 정교하게 노력해라. –

+0

'regex'라는 질문에 태그를 붙였습니다. 정규식이 무엇인지 아십니까? – khelwood

+0

정규식을 시도하려면 [this] (http://www.regexplanet.com/advanced/java/index.html)를 사용하십시오. –

답변

1

아마 당신은 찾을 캡처 그룹 # 1 필요

Pattern p = Pattern.compile("(?i)Hi MY NAME IS (.*)"); 
Matcher m = p.matcher("Hi MY NAME IS BOB"); 
if (m.find()) { 
    System.out.println("Group #1: " + m.group(1)); // BOB 
} 
  • (?i) 사례 일치를 무시위한
  • m.group(1)(.*)
즉 당신의 정규식에서 첫 번째 캡처 그룹의 값을 제공합니다
+1

또한 첫 번째 문자열이'HI'인지 확인하십시오. 정규식이'HY' 일 때 질문에 오타가있는 것 같습니다. –

+0

감사합니다. @AVolpe : 나는 그것을 고쳤다. – anubhava

+0

@AVolpe, yup, typo –

0

필요한 클래스는 Pattern입니다. 이 기능은 regex과 비슷하지만 기능이 다릅니다. Here은 설명서 링크입니다.

1

당신이 찾고있는 것은 java.util.regex 패키지입니다.

정규 표현식의 구문은 완전히 다른 대답이지만, 여기에 다소 익숙하다고 가정합니다.

Java에서 정규 표현식을 사용하려면 PatternMatcher의 두 객체를 만들어야합니다. 문서를 인용

하는 Pattern 개체 "컴파일 된 정규 표현"이며, Matcher 목적으로한다 "는 Pattern 해석하여 문자 시퀀스에 일치하는 동작을 수행하는 엔진."

즉, Pattern을 사용하여 정규 표현식을 정의하고 Matcher을 적용하면됩니다.

그래서이 라인 별을 보자 :

import java.util.regex.*; 
String a = "MY NAME is BOB"; 

은 물론, 당신은 패키지를 가져오고 당신이 정규식을 적용 할거야 문자열을 정의해야합니다.

Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)"); 

Pattern.compileString은 정규식을 나타내는 취하고 Pattern를 반환합니다.

Matcher match = wildcard.matcher(a); 

Pattern 객체를 사용하면에 Pattern을 적용 할 문자열을 사용하고 Matcher을 반환 인스턴스 메서드, matcher을 보유하고 있습니다. match.group(n) 반환 괄호의 N 그룹과 일치하는 문자열을 호출

System.out.println(match.group(1)); 

는 정규 표현식에서 (그룹을 캡처번째, n 개의 더 정확합니다). match.group(0)match.group()과 같으며 전체 일치 항목을 나타내는 문자열을 반환합니다. 이 경우, match.group(1)을 사용하고 있습니다. 그 이유는 우리 정규식의 괄호 세트 ((.*))를 끝에 매치시키고 싶기 때문입니다.

import java.util.regex.*; 
String a = "MY NAME is BOB"; 
Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)"); 
Matcher match = wildcard.matcher(a); 
System.out.println(match.group(1)); 
+0

이것은 분명하고 좋은 대답이지만, 같은 것은 anubhava에 의해 이미 제공되었습니다. –

0

이 당신을 위해 무엇을 요구 전적으로 것이 아니라 내가 작은 도움이 될하려고 시도 : 모두 함께 퍼팅

, 우리는 얻는다. 하위 문자열()을 사용하여 "BOB"를 인쇄 할 수 있습니다. 여기에 나를 위해 일한 것입니다 : String a = new String ("안녕 내 이름은 Bob"); System.out.printf ("이 인쇄물을 Bob \ n % s", a.substring (14)); 하위 문자열은 인덱스 14에서 시작하여 문자열의 끝까지 인쇄합니다.

+0

나는 그것을 생각했지만, 이미 내가 원하는 것에 단순하다. –

관련 문제