「시간」의 정규 표현 만들기
5572 단어 파이썬colaboratory정규식
결론
파이썬에 의한 「시간」의 정규 표현은 이쪽입니다.
pattern_date = r'((0?|1)[0-9]|2[0-3])[:時][0-5][0-9]分?'
# OK
# 1時10分
# 1:10
# 01:56
# 10:06
# 12:34
# NG
# 99:99
준비
환경은 Google 공동체를 사용합니다.
파이썬 버전은 다음과 같습니다.
import platform
print("python " + platform.python_version())
# python 3.6.9
정규식 검사 도구는 다음을 사용했습니다.
htps : // 레깅스 x101. 코m/
여기에서 확인하면서 정규 표현을 작성해, 코드에 구현해 갑니다.
또, Python의 정규 표현 전반에 대해서는, 이쪽이 알기 쉽습니다.
htps : // 이 m / ぅ 0404 / ms / 7135b2b96f9b0b196bf3
시간의 정규 표현식을 만들어 보자.
즉시 코드를 작성합시다.
먼저 정규식을 사용하는 라이브러리를 가져옵니다.
import re
우선,
12:34
라는 문자열과 일치하는 정규 표현식을 만듭니다.
pattern = r'12:34'
물론 이것은 정확히 일치하므로 일치합니다.
코드로 확인해 봅시다.
pattern = r'12:34'
string = r'12:34'
prog = re.compile(pattern)
result = prog.match(string)
if result:
print(result.group())
# 12:34
일치하는 문자열이 표시됩니다.
이후는 간단을 위해서, 정규 표현의 pattern만 기재합니다.
시간에는 「12:34」 이외에도 「01:56」이나 「10:06」등이 있습니다.
이것들에도 매치하는 정규 표현은 이하입니다.
pattern = r'\d\d:\d\d'
사용한 정규식은 다음과 같습니다.
문자
설명
\d
임의의 숫자
예
일치하는 문자열
\d\d
12, 34, 01, 56, 10, 06
위의 정규식은 더 쉽게 표현할 수 있습니다.
pattern = r'\d{2}:\d{2}'
새롭게 사용한 정규 표현은 이하입니다.
문자
설명
{m}
직전 문자의 m회 반복
예
일치하는 문자열
\d{2}
12, 34, 01, 56, 10, 06
그러나 이것으로는, 「99:99」라고 하는, 시각으로서 있을 수 없는 캐릭터 라인도 취해 버립니다.
이번에는 hh:mm 형식으로 다음 조건만 허용하기로 합니다.
수정한 정규 표현은 이하가 됩니다.
pattern = r'([01][0-9]|2[0-3]):[0-5][0-9]'
새롭게 사용한 정규 표현은 이하입니다.
문자
설명
[abc]
a, b, c 중 하나의 문자
예
일치하는 문자열
[01][0-9]
00~09, 10~19 즉, 00~19
2[0-3]
20~23
[0-5][0-9]
00~09, 10~19, …, 50~59 즉, 00~59
또, 이하의 정규 표현도 사용했습니다.
문자
설명
(abc|efg)
abc 또는 efg 문자열
예
일치하는 문자열
([01][0-9]|2[0-3])
00~19 혹은 20~23 즉, 00~23
이제 위의 조건만 일치하는 정규식을 만들었습니다.
그러나 이것으로는, 「1:10」이라고 하는, 0 매립(0패딩)되어 있지 않은 것은 취할 수 없습니다.
수정한 정규 표현은 이하가 됩니다.
pattern = r'((0?[0-9]|1[0-9])|2[0-3]):[0-5][0-9]'
새롭게 사용한 정규 표현은 이하입니다.
문자
설명
?
직전의 문자의 0회 또는 1회의 반복
예
일치하는 문자열
0?[0-9]
0~9 또는 00~09
이것은 다음과 같이 좀 더 짧게 쓸 수도 있습니다.
pattern = r'((0?|1)[0-9]|2[0-3]):[0-5][0-9]'
이제 0 채우기 (0 패딩)없이도 대응할 수있었습니다.
또한 ":(콜론)"뿐만 아니라 "-(하이픈)"과 "시(분)"에도 일치하도록 수정합시다.
pattern = r'((0?|1)[0-9]|2[0-3])[:時][0-5][0-9]分?'
요약
이번에는 Python을 사용하여 '시간'의 정규 표현식을 만들어 보았습니다.
날짜나 시간, 금액 등 어느 정도 패턴이 정해진 문자열은 정규 표현과의 궁합이 좋습니다.
다양한 문자열을 정규 표현식으로 꺼내보세요.
Reference
이 문제에 관하여(「시간」의 정규 표현 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shoku-pan/items/54374c00e3ea39d6be7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)