정규식 함수 pattern/matcher에서 사용할 문자열에서 이중 달러를 이스케이프하는 데 문제가 있습니다.달러를 그만두는 것
이 문자열의 일부입니다
WHERE oid_2 = $$test$$ || oid_2 = $$test2$$
이 내가 솔루션 근처에 가려고했습니다 가장 가까운 코드 :
List<String> strList = new ArrayList<String>();
Pattern pattern = Pattern.compile("\$\$.*?\$\$");
log.debug("PATTERN: "+pattern)
Matcher matcher = pattern.matcher(queryText);
while (matcher.find()) {
strList.add(matcher.group());
}
log.debug(strList)
이 내가
를 얻을 디버그 출력- PATTERN: $$.*?$$
- []
패턴이 실제로 맞지만 문자열에 자리 표시자를 찾을 수 없습니다.
테스트에서 "$$ test $$"를 "XXtestXX"로 바꾸려고 시도했지만 모든 것이 완벽하게 작동합니다. 내가 뭘 놓치고 있니? "/ $"문자열 "\\"을 시도했지만 여전히 해결책이 없습니다.
https://ideone.com/Olm30x –
"\\ $ \\ $. *? \\ $ \\ $"을 참조하십시오. 달러 기호 뒤의 불법 문자열 본문 문자. 해결책 : 리터럴 달러 기호 "\ $ 5"를 이스케이프하거나 값 표현식 "$ {5}"@ 7 행 38을 대괄호로 묶으십시오. Pattern pattern = Pattern.compile ("\\ $ \\ $. *? \\ $ \\ $ ")^1 오류 – GiLA3
슬래시 문자열을 사용하는 동안 작동합니다! 고마워, 내가 그 솔루션을 시도했다는 것을 확신했지만 어쨌든 나는 다시는 감사하지 않았다! – GiLA3