정규식 일치 후 다음 텍스트 가져 오기
저는 Regex를 처음 사용하고 튜토리얼을 훑어 보았지만 원하는 작업에 적용되는 것을 찾지 못했습니다.
나는 무언가를 찾고 싶지만 그 뒤에 오는 모든 것을 반환하지만 검색 문자열 자체는 반환하지 않습니다.
예 : " 굉장한 절름발이 문장 "
" 문장 " 검색
return " 정말 멋져요 "
어떤 도움이라도 대단히 감사하겠습니다.
이것은 지금까지 내 정규식입니다.
sentence(.*)
하지만 반환 : 굉장한 문장
Pattern pattern = Pattern.compile("sentence(.*)");
Matcher matcher = pattern.matcher("some lame sentence that is awesome");
boolean found = false;
while (matcher.find())
{
System.out.println("I found the text: " + matcher.group().toString());
found = true;
}
if (!found)
{
System.out.println("I didn't find the text");
}
주석에서 요청한대로 "정규 표현식 만"으로이를 수행 할 수 있습니다.
(?<=sentence).*
(?<=sentence)A는 긍정적 인 lookbehind 주장은 . 이것은 문자열의 특정 위치, 즉 sentence해당 텍스트 자체를 일치의 일부로 만들지 않고 텍스트 바로 뒤의 위치 에서 일치합니다. 결과적으로 (?<=sentence).*는 sentence.
이것은 정규식의 아주 좋은 기능입니다. 그러나 Java에서는 유한 길이의 하위 표현식에 대해서만 작동합니다. 즉 (?<=sentence|word|(foo){1,4}), 합법적이지만 (?<=sentence\s*)그렇지 않습니다.
귀하의 정규식 "sentence(.*)"이 맞습니다. 괄호 안의 그룹 내용을 검색하려면 다음을 호출합니다.
Pattern p = Pattern.compile( "sentence(.*)" );
Matcher m = p.matcher( "some lame sentence that is awesome" );
if ( m.find() ) {
String s = m.group(1); // " that is awesome"
}
m.find()이 경우 (문자열의 아무 곳이나 찾으려고 시도) 의 사용에 유의하십시오 m.matches()( "some lame"접두사로 인해 실패합니다.이 경우 정규식은 여야 함 ".*sentence(.*)").
Matcher가로 초기화 str되면 매치 후 매치 후 부품을 얻을 수 있습니다.
str.substring(matcher.end())
샘플 코드 :
final String str = "Some lame sentence that is awesome";
final Matcher matcher = Pattern.compile("sentence").matcher(str);
if(matcher.find()){
System.out.println(str.substring(matcher.end()).trim());
}
산출:
굉장하다
matcher 의 group (int) 을 사용해야합니다. group ( 0)은 전체 일치이고 group (1)은 표시 한 첫 번째 그룹입니다. 지정한 예에서 group (1)은 " sentence " 뒤에 오는 것 입니다.
다음 줄에 "group ()"대신 "group (1)"을 입력하면 예상 한 결과가 반환됩니다.
System.out.println("I found the text: " + matcher.group(**1**).toString());
참고 URL : https://stackoverflow.com/questions/5006716/getting-the-text-that-follows-after-the-regex-match
'IT Share you' 카테고리의 다른 글
| 읽기 전용 자동 구현 속성이 가능합니까? (0) | 2020.12.07 |
|---|---|
| []를 사용하여 인덱싱을 'System.Collections.Generic.IEnumerable <> 형식의 식에 적용 할 수 없습니다. (0) | 2020.12.07 |
| Android, 옵션 메뉴 생성 방법 (0) | 2020.12.07 |
| MySQL my.cnf 파일-이전 그룹이없는 옵션을 찾았습니다. (0) | 2020.12.07 |
| 입력 유형이 "제출"이 아닌 경우 HTML5 유효성 검사 (0) | 2020.12.07 |