I tried to make a regular expression of "time" using Python

Conclusion

Here is the regular expression of "time" by python.

pattern_date = r'((0?|1)[0-9]|2[0-3])[:Time][0-5][0-9]Minutes?'

# OK
#1:10
# 1:10
# 01:56
# 10:06
# 12:34

# NG
# 99:99

Preparation

The environment uses Google Colaboratory. The Python version is below.

import platform
print("python " + platform.python_version())
# python 3.6.9

The regular expression check tool used: https://regex101.com/ While checking here, we will create a regular expression and implement it in the code.

スクリーンショット 2020-04-20 9.20.18.png

Also, this is easy to understand about Python regular expressions in general. https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3

Let's create a regular expression for time

Let's write the code immediately. First, import the library for using regular expressions.

import re

First of all 12:34 Let's create a regular expression that matches the string.

pattern = r'12:34'

Of course, this is an exact match, so it matches. Let's check with the code.

pattern = r'12:34'
string = r'12:34'
prog = re.compile(pattern)
result = prog.match(string)
if result:
    print(result.group())
# 12:34 

The matched string is displayed. After that, for the sake of simplicity, only the regular expression pattern is described.

In addition to "12:34", there are other times such as "01:56" and "10:06". The regular expressions that match these are as follows.

pattern = r'\d\d:\d\d'

The regular expression used is:

letter Description
\d Any number
Example Matching string
\d\d 12, 34, 01, 56, 10, 06

The regular expression above can be expressed more easily.

pattern = r'\d{2}:\d{2}'

The newly used regular expressions are:

letter Description
{m} Repeat m of the previous character m times
Example Matching string
\d{2} 12, 34, 01, 56, 10, 06

However, this will result in a character string such as "99:99" that cannot be used as a time.

This time, we will allow only the following conditions as the hh: mm format.

The modified regular expression is as follows.

pattern = r'([01][0-9]|2[0-3]):[0-5][0-9]'

The newly used regular expressions are:

letter Description
[abc] a,b,Any letter of c
Example Matching string
[01][0-9] 00~09, 10~19
That is, 00~19
2[0-3] 20~23
[0-5][0-9] 00~09, 10~19, …, 50~59
That is, 00~59

I also used the following regular expression:

letter Description
(abc|efg) Either abc or efg string
Example Matching string
([01][0-9]|2[0-3]) 00~19 or 20~23
That is, 00~23

You now have a regular expression that matches only the above conditions.

However, this does not allow you to take things that are not 0-padded (0-padded), such as "1:10". The modified regular expression is as follows.

pattern = r'((0?[0-9]|1[0-9])|2[0-3]):[0-5][0-9]'

The newly used regular expressions are:

letter Description
? Repeat 0 or 1 of the previous character
Example Matching string
0?[0-9] 0~9 or 00~09

This can also be written a little shorter, like this:

pattern = r'((0?|1)[0-9]|2[0-3]):[0-5][0-9]'

With this, it is possible to handle the one without 0 padding (0 padding).

Furthermore, let's modify it so that it matches not only ": (colon)" but also "-(hyphen)" and "hour (minute)".

pattern = r'((0?|1)[0-9]|2[0-3])[:Time][0-5][0-9]Minutes?'

Summary

This time, I used Python to create a regular expression for "time".

Character strings with a certain pattern, such as dates, times, and amounts, are compatible with regular expressions. Try to extract various character strings with regular expressions.

Recommended Posts

I tried to make a regular expression of "time" using Python
I tried to make a regular expression of "amount" using Python
I tried to make a regular expression of "date" using Python
I tried to make a stopwatch using tkinter in python
I tried to make a todo application using bottle with python
I tried to make a ○ ✕ game using TensorFlow
I tried using Python (3) instead of a scientific calculator
I tried to make a simple text editor using PyQt
I tried to make a Web API
[5th] I tried to make a certain authenticator-like tool with python
[2nd] I tried to make a certain authenticator-like tool with python
[Python] I tried to implement stable sorting, so make a note
[3rd] I tried to make a certain authenticator-like tool with python
I tried to create a list of prime numbers with python
I tried to make a periodical process with Selenium and Python
I tried to get a list of AMI Names using Boto3
I tried to make a 2channel post notification application with Python
[4th] I tried to make a certain authenticator-like tool with python
[1st] I tried to make a certain authenticator-like tool with python
I tried to make a mechanism of exclusive control with Go
I tried to make a function to retrieve data from database column by column using sql with sqlite3 of python [sqlite3, sql, pandas]
I want to make a game with Python
I tried reading a CSV file using Python
Python: I tried to make a flat / flat_map just right with a generator
I tried to make a traffic light-like with Raspberry Pi 4 (Python edition)
I tried to perform a cluster analysis of customers using purchasing data
I tried to create a sample to access Salesforce using Python and Bottle
Python: I want to measure the processing time of a function neatly
I tried to implement a card game of playing cards in Python
I want to make a web application using React and Python flask
[Python] I tried to make a simple program that works on the command line using argparse.
Make one repeating string with a Python regular expression.
I tried to make a periodical process with CentOS7, Selenium, Python and Chrome
[Python] I tried to judge the member image of the idol group using Keras
I tried to summarize how to use matplotlib of python
I tried to draw a route map with Python
[Python] Deep Learning: I tried to implement deep learning (DBN, SDA) without using a library.
[Patent analysis] I tried to make a patent map with Python without spending money
I tried to implement a pseudo pachislot in Python
Continuation ・ I tried to make Slackbot after studying Python3
[Python] Smasher tried to make the video loading process a function using a generator
A super introduction to Django by Python beginners! Part 2 I tried using the convenient functions of the template
How to make a Python package using VS Code
[Python] I tried to make a Shiritori AI that enhances vocabulary through battles
[Python] I want to make a nested list a tuple
I tried to automatically generate a password with Python3
I tried to make a translation BOT that works on Discord using googletrans
[Python] I tried using OpenPose
[Python] I tried running a local server using flask
I tried drawing a pseudo fractal figure using Python
A python regular expression, or a memo of a match object
I made a script to record the active window using win32gui of Python
[Python] I tried to get Json of squid ring 2
I tried to access Google Spread Sheets using Python
I tried to make a suspicious person MAP quickly using Geolonia address data
I tried to draw a configuration diagram using Diagrams
I tried to summarize the string operations of Python
I tried to make something like a chatbot with the Seq2Seq model of TensorFlow
I tried to make a real-time sound source separation mock with Python machine learning
Python practice 100 knocks I tried to visualize the decision tree of Chapter 5 using graphviz
I want to collect a lot of images, so I tried using "google image download"