正则表达式:
创建与Email匹配的正则表达式
2 .用这个正则表达式匹配用户的输入,判断是否正当。
正则表达式也用字符串表示,所以首先要了解如何用字符描述字符。
在正则表达式中,如果直接给定字符,则它们会精确匹配。 d可以匹配数字,w可以匹配字符和数字,如下所示:
“00d”可以与“007”匹配,但不能与“00A”匹配;
'ddd '是' 010 ';
'wwd '是' py3 ';
.因为可以匹配任意文字:
' py.'是' pyc '、' pyo '、' py!' 一致的等待。
要匹配增长的字符,正则表达式必须用*表示任何字符(包括0个字符),至少用表示一个字符, 表示0个字符或1个字符,{n}表示n个字符,{n,m}表示n-m个字符:
让我们来看一个复杂的例子。 d {3}sd { 3,8 }。
从左到右解读一下:
d表示与{3}个数字一致。 例如,' 010 ';
s可以匹配一个空格(包括制表符等空格),因此) s表示至少有一个空格。 例如,匹配“”、“”等。
d { 3,8 }表示3-8个数字,例如' 1234567 '。
总的来说,上面的正则表达式匹配由任意空格分隔的带区号的电话号码。
如果符合' 010-12345 '这样的号码呢? '-'是特殊字符,因此在正则表达式中用''转义。 因此,上面的正则表达式是 d {3}-d { 3,8 }。
但仍然与' 010 - 12345 '不匹配。 因为有空间。 所以需要更复杂的匹配方法。
要更准确地匹配,可以用[]表示范围,如下所示:
[0-9a-zA-Z_]可以与数字、字符或下划线匹配;
[0-9a-zA-Z_]可以与至少一个数字、字符或下划线组成的字符串(如“a100”、“0_Z”或“Py3000”)匹配。
[a-zA-Z_][0-9a-zA-Z_]*可以以字符或下划线开头,并与由数字、字符或下划线组成的任何字符串匹配。 也就是说,这是Python的有效变量。
[ a-za-z_ ] [0- 9a-za-z_ ] { 0,19 }更准确地限制了变量的长度为1-20个字符(前面一个字符之后最多19个字符)。
因为A|B与a或b匹配,所以(P|p ) ython与' Python '或' Python '匹配。
^表示行的开头,^d表示必须以数字开头。
$表示行的结尾,d$表示必须以数字结尾。
您可能注意到,py也可以与“python”匹配,但如果加上^py$,则匹配整个行,仅匹配“py”