정규식을 개선하려고합니다.주위에 부정적인 모양을 이해하지 못함
내가이 문자열이 있습니다
String myString =
"stuffIDontWant$KEYWORD$stuffIWant$stuffIWant$KEYWORD$stuffIDontWant";
을 그리고 내가 원하는 이것은 단지 물건을 빼지 만들어 :
String regex = "\\$KEYWORD\\$.+\\$.+\\$KEYWORD\\$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(myString);
if(m.find()){
String result = stuff.substring(m.start(), m.end());
}
목표는 stuffIWant$stuffIWant
를 얻는 것입니다 다음 문자 $
로 분할, 그래서 그것을 개선하고 Patter와 Matcher를 Java 소스로 가져 오는 것을 피하기 위해 lookaround에 대해 읽었으므로 두 번째 접근법은 다음과 같습니다.
//Deletes what matches regex
myString.replaceAll(regex, "");
// Does nothing, and i thought it was just the opposite of the above instruction.
myString.replaceAll("(?! "+regex+")", "");
올바른 방법과 내 개념은 어디에 잘못됩니까?
난 당신이 무엇을 lookaround 오해 생각합니다. Lookaround는 실제 문자가 아닌 텍스트의 위치 (깜박이는 커서와 같은)와 일치합니다. 이를 아무것도 대체하지 않기 때문에 실제 문자가 대체되지 않습니다. – Arjen
@Arjen 감사합니다. 그런 다음 더 자세히 읽으겠습니다 (지금 당장은 시간이 없습니다). 패턴 및 매처를 사용하여 작동했던 것에 대한 더 나은 해결책이 있습니까? – Roger
현재 솔루션에 어떤 문제가 있습니까? 나에게 충분히 좋은 것 같아! acheong87과 마찬가지로 캡처를 사용하여 찾은 문자열을 분할하지 않아도됩니다. – Arjen