기금넷 공식사이트 - 복권 조회 - 일반 표현식을 찾아 텍스트에서 날짜-시간 코드를 대량 제거하시겠습니까? (삭제할 날짜와 시간 번호는 다릅니다. ) 을 참조하십시오
일반 표현식을 찾아 텍스트에서 날짜-시간 코드를 대량 제거하시겠습니까? (삭제할 날짜와 시간 번호는 다릅니다. ) 을 참조하십시오
하지만 실제 상황은 그렇게 간단하지 않습니다. 유효성, 윤년 등 고려해야 할 문제가 많습니다. .....
적용 장면은 날짜의 유효 범위에 따라 다릅니다. MSDN 에 정의된 DateTime 객체의 유효 범위는 0001-01-0100: 00: 00 부터 9999-/kr 까지입니다
ISO 860 1 사양에 따르면 유닉스 타임스탬프 0 은1970-01-01t00: 00 입니다
연도와 무관한 처음 세 가지 규칙을 고려하면 연도를 통일적으로 쓸 수 있다.
(? ! 0000)[0-9]
다음은 달과 일의 규칙성만 고려한다.
1. 일반 연도를 포함한 모든 연도의 월에는 1-28 일이 포함됩니다.
(0 [1-9] |1[0-2])-(0 [1-9] |/kloc
2. 2 월을 제외한 정상 연도를 포함한 모든 연도에는 29 일과 30 일이 포함됩니다.
(0 [13-9] |1[0-2])-(29 | 30)
3. 1, 3, 5, 7, 8, 10 및 12 를 포함한 일반 연도를 포함한 모든 연도 (3/kloc 포함)
(0 [13578] |1[02])-31)
합치면 윤년 2 월 29 일을 제외한 모든 날짜다.
(? ! 0000) [0-9]-((0 [1-9] |1[0-2])-(0 [/kloc]
다음으로 윤년의 실현을 고려한다.
1: 4 년마다 도약한다
([0-9] (0 [48] | [2468] [048] | [13579] [26])
2. 백년은 비약하지 않고, 400 년은 다시 비약한다.
(0 [48] | [2468] [048] | [13579] [26]) 00
3. 합치면 모든 윤년의 2 월 29 일이다.
([0-9] (0 [48] | [2468] [048] | [13579] [26]) | (0 [48] |
네 가지 규칙이 모두 시행되어 서로 영향을 미치지 않는다. 요약하면, 날짜 시간 범위와 일치하는 모든 날짜의 정규화입니다.
((? ! 0000) [0-9]-((0 [1-9] |1[0-2])-(0 [/kloc] Kloc-0/[02])-31) | ([0-9] (0 [48] | [2468] [048] | [//
이 정규 표현식은 검증용으로만 사용되며 캡처 그룹은 의미가 없으며 리소스만 사용하고 일치 효율성에 영향을 주므로 비캡처 그룹을 사용하여 최적화할 수 있습니다.
(? : (? ! 0000)[0-9]- (? : (? : 0[ 1-9]| 1[0-2])- (? : 0 [1-9] |1[0-9] | 2 [0-8]) | (? : 0[ 13-9]| 1[0-2])- (? : 29|30)| (? : 0 [13578] |1[02])-31) | (? : [0-9] (? : 0 [48] | [2468] [048] | [13579] [26]) | (? : 0 [48] | [2468] [048] | [13579] [26]) 00)-02-29) $