[파이썬] argparse 인수의 regex 검증

In Python, the argparse module provides a convenient way to parse command-line arguments. It allows us to define the expected arguments, their types, and any validation rules. One common scenario is to validate arguments using regular expressions (regex).

Regex, short for regular expressions, is a sequence of characters that defines a search pattern. It provides a powerful and flexible way to match, search, and manipulate strings. By using regex in combination with argparse, we can ensure that the provided command-line arguments match a specific pattern.

Let’s see an example of how to perform regex validation using argparse in Python:

import argparse
import re

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('input', help='Input string')
    parser.add_argument('--pattern', help='Regex pattern')

    args = parser.parse_args()

    if args.pattern:
        if not re.match(args.pattern, args.input):
            print(f"Input does not match the pattern: {args.pattern}")
            return

    # Rest of the logic goes here

if __name__ == '__main__':
    main()

In the above example, we define two arguments - input and pattern. The input argument represents the string that needs to be validated, and the pattern argument represents the regex pattern that the input should match.

We use re.match() function from the re module to perform the regex matching. If the pattern argument is provided and the input string does not match the pattern, we print an error message and exit. Otherwise, we can continue with the rest of the logic.

Here’s how we can use this script:

python script.py "Hello, World" --pattern "^Hello"

In the above command, we pass the input string as “Hello, World” and specify the regex pattern as ^Hello. The ^ symbol matches the start of the string. Since the input string starts with “Hello”, it matches the specified pattern and the script continues with the rest of the logic.

If the input string did not match the pattern, we would see the following output:

Input does not match the pattern: ^Hello

Using regex validation with argparse in Python, we can enforce specific patterns for command-line arguments and provide a more robust user experience by validating input at the argument level. This ensures that only valid inputs are accepted.