정규식은 23자리 문자열에 포함된 경우 일치를 무시합니다.

정규식은 23자리 문자열에 포함된 경우 일치를 무시합니다.

상황에 대한 해결책을 찾는 데 문제가 있습니다. 특정 숫자 순서와 일치하는 정규 표현식이 있습니다.

(102030)\d{10}

이것을 테스트 데이터로 사용하면 다음과 같은 일치 항목을 얻습니다.

75277887243040354513001
55345377243014107206375
810203087654135168       <- Match
1102030698798798477      <- Match
71020307248040361799581  <- Match

내가 하려는 것은 문자열에 23자리 숫자가 있는 경우를 무시하는 것입니다. 정규식만 사용하면 가능합니까? 나는 부정적인 시각으로 노력했지만 그것을 달성하지 못했습니다.

답변1

미리 내다보려면 그 전에 뭔가가 필요합니다. 그러니 먼저 시작해 보세요.

\d

그런 다음 다음 22자리 앞에 음수를 붙입니다.

(?!\d{22})

23자리 숫자로 된 모든 줄을 필터링합니다. 그런 다음 원래 문자열을 따를 수 있습니다.

(102030)\d{10}

따라서 전체 정규식은 다음과 같습니다.

\d(?!\d{22})(102030)\d{10}

결과를 확인하세요.regex101.com:

여기에 이미지 설명을 입력하세요

답변2

\b(?!\d{23}\b)\d*((102030)\d{10})\d*\b

그러면 첫 번째 하위 그룹의 일치 항목이 캡처됩니다.

관련 정보