在python中使用正则表达式匹配字符串长度

dim*_*a.h 4 python regex python-2.7

为字符串编写 python 正则表达式。我希望字符串至少为 1 个符号,最多为 30 个。问题是我在正则表达式字母中使用了 3 个子块,因此长度必须为 3 个字符。是否可以在此正则表达式中添加该条件(1-30 个字符长度):

regex = re.compile("^[a-zA-Z]+[a-zA-Z0-9\.\-]+[a-zA-Z0-9]$")
r = regex.search(login)
Run Code Online (Sandbox Code Playgroud)

谢谢你。

eci*_*eci 6

虽然不清楚您要接受哪个 1 或 2 个长度的字符串,但我建议使用以下正则表达式:

regex = re.compile("^[a-zA-Z][a-zA-Z0-9\.\-]{0,28}[a-zA-Z0-9]$")
Run Code Online (Sandbox Code Playgroud)

由于中间集包括所有其他,这将直接匹配所有长度为 3-30 的单词,如您所愿。

我希望这个正则表达式也匹配你的 2 个长度的字符串(我只是假设第一个字符必须是一个字母),你需要为单字母匹配添加一些东西(使用“|”)。