Programming

정규식 옵션 문자를 일치시키는 방법

procodes 2020. 7. 28. 22:14
반응형

정규식 옵션 문자를 일치시키는 방법


지금까지 올바르게 작동한다고 생각한 정규 표현식이 있습니다. 선택적인 캐릭터와 일치해야합니다. 있을 수도 있고 없을 수도 있습니다.

두 개의 줄이 있습니다. 상단 문자열은 일치하지만 하단 문자열은 일치하지 않습니다. 하단 문자열에 단일 문자가 없으면 실패합니다.

5 자리가 시작되면 한 글자를 받고 싶습니다. 그렇지 않으면 나머지 문자열을 계속 얻습니다. 이 편지는 가능합니다 A-Z.

([A-Z]{1}) +.*? +정규식에서 제거 하면 문자를 제외하고 필요한 모든 항목과 일치하지만 중요합니다.

20000      K               Q511195DREWBT            E00078748521
30000                      K601220PLOPOH            Z00054878524

여기에 내가 사용하고있는 정규식이 있습니다.

/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/

사용하다

[A-Z]?

문자를 선택적으로 만들려면 {1}중복됩니다. (물론 [A-Z]{0,1}동일한 것을 의미하는 쓸 수도 있지만, 그것이 무엇인지에 대한 ?것입니다.)

정규식을 향상시킬 수 있습니다.

^([0-9]{5})+\s+([A-Z]?)\s+([A-Z])([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})

그리고 대부분의 정규식 방언에서 \d다음과 같습니다 [0-9].

^(\d{5})+\s+([A-Z]?)\s+([A-Z])(\d{3})(\d{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])\d{3}(\d{4})(\d{2})(\d{2})

그러나 11 개의 개별 캡처 그룹이 정말로 필요합니까? 그렇다면 네 번째에서 마지막 숫자 그룹을 캡쳐하지 않겠습니까?


?다음과 같이 뒤에 하나를 추가하여 단일 문자를 선택적으로 만들 수 있습니다 .

([A-Z]{1}?)

수량 {1}자는 중복되므로 삭제할 수 있습니다.


단일 문자도 옵션으로 표시해야합니다.

([A-Z]{1})? +.*? +

또는 전체 부분을 선택적으로 만드십시오

(([A-Z]{1}) +.*? +)?

원하는 (.*)\/(([^\?\n\r])*)위치 $2같은 경우에 맞게 설계된 더 간단한 정규식을 사용할 수도 있습니다 .

참고 URL : https://stackoverflow.com/questions/4007302/regex-how-to-match-an-optional-character

반응형