반응형
다른 항목이 선행되지 않는 경우 일치하는 항목을 찾기 위한 정규식
자바에서 regex를 가지고 패턴이 특정 문자가 선행되지 않는 경우에만 일치하는 regex를 쓰고 싶다.예를 들면 다음과 같다.
String s = "foobar barbar beachbar crowbar bar ";
나는 바 앞에 foo가 없다면 매치하고 싶다.따라서 다음과 같은 결과를 얻을 수 있다.
barbar
beachbar
crowbar
bar
사용하려는 경우negative lookbehind
다음과 같은 경우:
\w*(?<!foo)bar
어디에(?<!x)
"이 지점 이전에 "x"가 없는 경우에만"을 의미한다.
편집: 추가\w*
이전 문자(예: "beach")를 캡처한다.
또 다른 옵션은 먼저 선택 단어 문자와 일치하는 다음 단어를 찾는 것이다.bar
, 그리고 그것이 일치했을 때 왼쪽에 바로 있는 것은 아니다.foobar
.
뒤쪽의 주장은 일치된 후에 실행될 것이다.bar
첫째로
\w*bar(?<!foobar)
\w*
0+단어 일치bar
문자 그대로 일치(?<!foobar)
부정적인 뒷모습, 현재 위치에서 주장foobar
왼쪽으로 직접 가지 않는다
어떤 경우에는 앞의 부분을 선택적으로 포함시킨 다음 두 번째 단계로 해당 경기를 건너뛰는 것이 더 쉬울 수 있다.예를 들어, "+"로 시작하지 않는 숫자를 찾으려면:
if (preg_match_all('/(\+?[0-9][0-9\s\-].*[0-9])/s',$text,$matches)) {
foreach($matches[1] as $match) {
if(substr($match,0,1) == '+'){
continue;
}
// continue processing
}
}
여전히 2+자릿수와 일치하기 때문에 뒤쪽의 부정적인 표정은 먹히지 않았지만, 첫 번째 자릿수는 경기에 포함시키지 않았다.예를 들어 +1234는 234로 반환된다.
반응형
'IT이야기' 카테고리의 다른 글
TypeScript를 사용하여 vuex에서 커밋에 대한 유형 체킹을 추가하는 방법 (0) | 2022.05.06 |
---|---|
Vue 2 뷰포트에 표시되는 요소 확인 (0) | 2022.05.06 |
Java에서 NoClassDefoundError를 받는 이유 (0) | 2022.05.06 |
PROPESS로 HTML 버튼 이름 속성을 전달하는 Vue js (0) | 2022.05.06 |
Vue-cli 3 환경 변수 모두 정의되지 않음 (0) | 2022.05.06 |