일치하려는 문자는 문자 (글자 + 숫자 + 하이픈 (-)
)와 5 자리 다음 9 자리입니다. 패턴의 각 부분은 하이픈으로 구분됩니다. (-)
5 자리 및 9 자리 부분은 선택 사항입니다. 그 중 하나는 존재할 수 있고 다른 하나는 존재하지 않을 수도 있고 존재하지 않을 수도 있거나 존재하지 않을 수도 있습니다. 위는 다음과 같이 진행에 대한 그래서 패턴이이 정규식에 무슨 문제가 있습니까
bla-12-bla-98-bla-12345-123456789 all parts(characters+5-digit+9-digit)
bla-bla-123-12345 9-digit part absent
blasd-123456789 5-digit part absent
no-1045-numeric-bla-bla both numeric parts absent
처럼 될 수 있습니다 내가 생각 해낸 정규식이
.+(\d{5})?-?(\d{9})?$
추론이다. 처음에는 .+
이 모든 문자와 일치하기 때문에 (\d{5})?
은 5 자리 부분이 0 또는 1 인 경우 선택 사항이 될 수 있다고 말합니다.
-?
의 경우 두 숫자 부분이 모두 존재하지 않을 경우 -
이되지만 숫자 부분이 모두있는 경우 1 -
이되므로 다시 선택 사항이됩니다.
(\d{9})?
에 대해서도 마찬가지입니다.
그러나 위 패턴은 아무 것도 아닙니다. 나는 파이썬을 사용하고 있으므로 group(1)
과 group(2)
은 모두 None
이다.
위의 사항에 문제가 있습니까?
안녕하세요. 작동합니다. 그러나 당신은 그 하이픈을 벗어날 필요가 없다. – lovesh
당신 말이 맞아요. 나는 어쨌든 정규 표현식의 모든 특수 문자를 이스케이프 (escape)하는 습관을 개발했다. 왜냐하면 작동하기 쉽고, 내가 도망쳐 야하는 것에 대해 걱정할 필요가 없기 때문이다 .- –
어떤 문자열이 앞에 있는지 신경 쓰면 게으른 평가를 할 수있다. 숫자의 정규 표현식에'. +?'를 넣는다. – devsnd