用户需要输入文件扩展名,我想检查它是否有效。如果没有,我想要求重新进入。
我认为输入应符合这些规则:
我试过像这样的正则表达式:
r'(\.)?\w+'
但是id对我不起作用,因为它匹配的字符串只包含字母数字和下划线符号,并且在开头不需要点,并且允许输入除允许的字符之外的任何字符。< / p>
答案 0 :(得分:1)
我认为输入应符合这些规则:它可以以点开头。点之后(或没有它)的所有其他符号可以只是数字和字母。
请注意,要将整个字符串与模式匹配,您需要使用锚点^
(re.match
}和$
不需要。如果您使用Python 3.x re.fullmatch
,则不需要它们。
下一点:如果您需要强制.
,则需要在点模式后删除?
量词,因为它匹配1或0次。
另外,要仅匹配字母数字符号,请不要使用\w
,因为它也匹配下划线。
您可以使用
re.match(r'\.[^\W_]+$', s)
或(仅支持ASCII字母和数字,无论使用修饰符/ Python版本)
re.match(r'\.[a-zA-Z]+$', s)
检查字符串是否以点开头,然后在字符串末尾有一个或多个字母或数字。