내 정규 표현식:
^[0-9]{9}_(010020)(004)-[0-9,a-z,A-Z]+__[0-9]{8}_[0-9]{4}
다음 문자열과 일치합니다.
010020004_010020004-xxxxxxxxxxxxxxxxxx_20180105_1606
위의 방법은 괜찮습니다. 하지만 (004) 굵은 문자열과 같지 않은 문자열을 일치시키려는 경우입니다. 부정 예측(?!004)을 시도했는데 문자열과 일치하지 않았습니다.
^[0-9]{9}_(010020)**(?!004)**-[0-9,a-z,A-Z]+__[0-9]{8}_[0-9]{4}
010020004_010020005-xxxxxxxxxxxxxxxxxx_20180105_1606
내가 뭐 놓친 거 없니
답변1
귀하의 패턴과 답변을 바탕으로https://stackoverflow.com/questions/1971738/regex-for-all-strings-not-changing-a-string:내 편집기에서는 다음 패턴이 작동합니다.
^[0-9]{9}_(010020).*(?<!004)-[0-9,a-z,A-Z]+_[0-9]{8}_[0-9]{4}
귀하의 패턴에 "+" 기호 뒤에 추가 밑줄이 있는 것 같습니다. 먼저 마지막 3자를 일치시킨 다음 "004"가 아닌지 확인해야 합니다.
정확한 형식에 따라 3자리 숫자만 일치하는지 확인할 수 있습니다.^[0-9]{9}_(010020)([0-9]*(?<!004)){3}-[0-9,a-z,A-Z]+_[0-9]{8}_[0-9]{4}