이 코드는 자바 스크립트에서 작동합니다. 자바에서 비슷한 것을 할 수 있습니까? (문자열에서 와일드 카드 값 가져 오기)문자열 Java에서 와일드 카드의 값을 가져 오는 방법은 무엇입니까?
var a = "HI MY NAME IS BOB"
var b = /HI MY NAME IS (.*)/
alert("HI " + b.exec(a)[1])
이 코드는 자바 스크립트에서 작동합니다. 자바에서 비슷한 것을 할 수 있습니까? (문자열에서 와일드 카드 값 가져 오기)문자열 Java에서 와일드 카드의 값을 가져 오는 방법은 무엇입니까?
var a = "HI MY NAME IS BOB"
var b = /HI MY NAME IS (.*)/
alert("HI " + b.exec(a)[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)
(.*)
또한 첫 번째 문자열이'HI'인지 확인하십시오. 정규식이'HY' 일 때 질문에 오타가있는 것 같습니다. –
감사합니다. @AVolpe : 나는 그것을 고쳤다. – anubhava
@AVolpe, yup, typo –
필요한 클래스는 Pattern
입니다. 이 기능은 regex
과 비슷하지만 기능이 다릅니다. Here은 설명서 링크입니다.
당신이 찾고있는 것은 java.util.regex 패키지입니다.
정규 표현식의 구문은 완전히 다른 대답이지만, 여기에 다소 익숙하다고 가정합니다.
Java에서 정규 표현식을 사용하려면 Pattern
과 Matcher
의 두 객체를 만들어야합니다. 문서를 인용
하는 Pattern
개체 "컴파일 된 정규 표현"이며, Matcher
목적으로한다 "는 Pattern
해석하여 문자 시퀀스에 일치하는 동작을 수행하는 엔진."
즉, Pattern
을 사용하여 정규 표현식을 정의하고 Matcher
을 적용하면됩니다.
그래서이 라인 별을 보자 :
import java.util.regex.*;
String a = "MY NAME is BOB";
은 물론, 당신은 패키지를 가져오고 당신이 정규식을 적용 할거야 문자열을 정의해야합니다.
Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)");
Pattern.compile
는 String
은 정규식을 나타내는 취하고 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));
이것은 분명하고 좋은 대답이지만, 같은 것은 anubhava에 의해 이미 제공되었습니다. –
이 당신을 위해 무엇을 요구 전적으로 것이 아니라 내가 작은 도움이 될하려고 시도 : 모두 함께 퍼팅
는, 우리는 얻는다. 하위 문자열()을 사용하여 "BOB"를 인쇄 할 수 있습니다. 여기에 나를 위해 일한 것입니다 : String a = new String ("안녕 내 이름은 Bob"); System.out.printf ("이 인쇄물을 Bob \ n % s", a.substring (14)); 하위 문자열은 인덱스 14에서 시작하여 문자열의 끝까지 인쇄합니다.
나는 그것을 생각했지만, 이미 내가 원하는 것에 단순하다. –
질문이 명확하지 않습니다. 정교하게 노력해라. –
'regex'라는 질문에 태그를 붙였습니다. 정규식이 무엇인지 아십니까? – khelwood
정규식을 시도하려면 [this] (http://www.regexplanet.com/advanced/java/index.html)를 사용하십시오. –