regex 如何将模式与连字符或撇号匹配

tjjdgumg  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(156)

我尝试写一个正则表达式来接受包含a-z A-Z的名字,但也有一些名字可能包含连字符或撇号。我有这个到目前为止,它不匹配任何东西:

(^[a-zA-Z]['][-]$)
kmbjn2e3

kmbjn2e31#

你的正则表达式^[a-zA-Z]['][-]$匹配一个后面跟着'-的字母,比如a'-
您需要添加量词和一个可选组(*将允许0次或多次出现),例如

^[a-zA-Z]+(?:['-][a-zA-Z]+)*$
         ^^^^^^^^^^^^^^^^^^^

请参阅regex demo

Debuggex Demo
该模式锚定整个匹配(它应该匹配整个字符串),它匹配1个或多个字母([a-zA-Z]+),然后匹配'-(由于['-])的 *0次或多次出现 *,后跟1+个字母。

k5hmc34c

k5hmc34c2#

请使用以下命令:

^[a-zA-Z'-]+$

Demo

ukdjmx9f

ukdjmx9f3#

first_name = input("Enter first name: ")
try:
    if not re.search("^[A-Za-z'- ]+$", first_name):
        raise ValueError:
except ValueError:
    print("Invalid first name, must use letters or acceptable name symbols")
else:
    break

相关问题