스택큐힙리스트

HTML의 p 태그를 한국어로 번역하세요.ICU 정규식을 사용하여 괄호 안에 포함되지 않은 숫자를 찾는 정규식 문제입니다. 본문

카테고리 없음

HTML의 p 태그를 한국어로 번역하세요.ICU 정규식을 사용하여 괄호 안에 포함되지 않은 숫자를 찾는 정규식 문제입니다.

스택큐힙리스트 2023. 11. 28. 06:57
반응형

주어진 문자열에서 숫자를 찾으려고 합니다. 숫자는 v/v./vol/vol. 이후에 있으면 안되며, 괄호 안에 있으면 안 됩니다. 다음은 제가 작성한 내용입니다:


NSString *regex = @(?i)(?<!v|vol|vol\\.|v\\.)\\d{1,4}(?![\\(]{0}.*\\));
NSLog(@결과: %@, [@test test test 4334 test test stringByMatching:regex]);
NSLog(@결과: %@, [@test test test(4334) test test stringByMatching:regex]);
NSLog(@결과: %@, [@test test test(vol.4334) test test stringByMatching:regex]);

불행하게도 이 작업은 제대로 작동하지 않습니다. 정규식을 네 부분으로 나눌 수 있습니다:


(?i) - 정규식을 대소문자 구분 없이 처리합니다.


(?<!v|vol|vol\\.|v\\.) - v/v./vol/vol.에 대한 부정적 뒤쪽 참조 어설션입니다.


\\d{1,4} - 찾고 있는 숫자, 1-4자리 숫자입니다.


(?![\\(]{0}.*\\)) - 부정적 전방 참조 어설션: 숫자는 )의 앞에 올 수 없으며, (가 있다면 예외입니다.

무덤 때문에, 뒤쪽 긍정 단언을 제외하면 작동합니다. 이곳에 문제가 뭔가요? RegexKitLite을 사용하는데, 이것은 ICU 정규식 구문을 사용합니다.

답변 1

당신의 부정적인 룩비힌드는 위치가 잘못되었습니다. 룩비힌드는 입력 위치를 수정하지 않으며, \d{1,4} 표현식 이후에 부정적인 룩비힌드가 와야합니다:


(?i)\\d{1,4}(?<!v|vol|vol\\.|v\\.)(?![\\(]{0}.*\\))

또는 동일한 목적을 달성하기 위해 부정적인 룩어헤드를 사용하세요:


(?i)(?!v|vol|vol\\.|v\\.)\\d{1,4}(?![\\(]{0}.*\\))

답변 2

문자열에서 괄호 안에 포함되지 않은 숫자를 찾기 위해 ICU 정규식을 사용하는데 문제가 있습니다.
ICU 정규식을 사용하여 괄호 안에 있는 숫자를 무시하고 괄호 밖에 있는 숫자를 찾으려는 경우, 다음과 같은 문제가 발생할 수 있습니다. 예를 들어, 저는 (123) 번호를 가지고 있습니다라는 문자열이 있다고 가정해 봅시다. 우리는 괄호 안에 있는 숫자를 무시하고 괄호 밖에 있는 숫자만 찾고 싶습니다. 그러나 기존 방법으로는 123이라는 값을 검색할 수 없을 것입니다.
이 문제를 해결하기 위해 우리는 신중한 접근 방법을 선택해야 합니다. 첫째, 문자열에서 괄호 안에 있는 모든 내용을 제거하는 것이 좋습니다. 이를 위해 다음 정규식을 사용할 수 있습니다: \([^)]*\). 이 정규식은 여는 괄호 (와 닫는 괄호 ) 사이에 있는 모든 문자열을 제거합니다.
다음으로, 괄호를 제거한 문자열에서 숫자를 찾기 위해 또 다른 정규식을 사용할 수 있습니다. 숫자를 검색하기 위해 \d+ 정규식을 사용할 수 있습니다. 이 정규식은 하나 이상의 연속된 숫자를 찾아줍니다. 이를 통해 괄호 안에 없는 모든 숫자를 찾을 수 있습니다.
마지막으로, 찾아진 숫자들을 사용할 때 SEO에 유의해야 합니다. 검색 엔진 최적화(SEO)를 고려해야 하는 이유는 올바른 키워드 사용과 내용의 유사성 등이 더 높은 검색 엔진 노출을 도와줄 수 있기 때문입니다.
따라서, ICU 정규식을 사용하여 괄호 안에 포함되지 않은 숫자를 찾기 위한 문제를 해결하기 위해 괄호를 제거하고 제거된 문자열에서 숫자를 찾습니다. 이를 통해 검색 엔진 최적화를 고려한 접근 방법을 적용할 수 있습니다.

반응형
Comments