美文网首页
2018-09-11 day-17正则表达式(含作业)

2018-09-11 day-17正则表达式(含作业)

作者: nothingpy | 来源:发表于2018-09-11 17:36 被阅读0次

1.正则表达式

正则表达式就是用来检测字符串是否满足某种规则的工具。

2.正则语法

----------------------单个字符-----------------------------------
1) . 匹配任意字符:匹配一个字符串,只有一位字符并这个字符是任意字符

2) \w 匹配字母数字下划线(一位)

3) \s 匹配空白字符(空白指空格,制表符(\t)和回车(\n)等所有能产生空白的字符)

4) \d 匹配一个数字字符

5) \b 检测是否是单词边界(单词的开头,单词的结尾,单词和单词之间的标点空格等)
注意:正则中遇到\b,匹配的时候先不管它,匹配成功后再回头看\b位置是否是单词边界

6) ^ 检测字符串是否以给定的正则表达式开头(开头)

7) $ 检测字符串是否以给定的正则表达式结束。

8) \W 匹配一个非数字,字母,下划线的字符

9) \S 匹配非空白字符

10) \D 匹配一个非数字字符

11) \B 检测非单词边界
----------------------匹配次数-----------------------------------
1) []  匹配中括号中出现的任意字符。注意:(一个中括号匹配一个字符)。
-在正则中的中括号中的应用:
[1-8]:代表1~8
[-18]或者[18-] 代表'1' ,'8','-'

2) [^] 匹配不在[]字符集中的任意一个字符

3) * 匹配0次或多次

4) + 匹配1次或多次

5) ? 匹配0次或者一次

6) {N} 匹配N次

7) {M,} 至少匹配M次

8) {,N} 最多匹配N次

9) {M,N} 匹配至少M次,最多N次。要求N > M

python
------------------------------分支和分组------------------------
1)  | 分支(相当于逻辑运算中的or)
注意:正则中的分支有短路操作(前面的分支满足不会执行后面。前面是个整体.)

2) 分组:通过加()分组.

3).捕获:安装完整的正则表达式去匹配,只捕获()中的内容。只有在findall中有效

3.python对正则表达式的支持(re模块)

1.内置的模块:re

1.fullmatch(正则表达式,字符串):判断整个字符串是否符合正则表达式的规则。如果匹配成功返回匹配对象,否则返回None

2.compile(正则表达式):将正则表达式转换成正则表达式对象

3.mach(正则表达式,字符串):判断字符串的开头是否能和正则表达式匹配。(前面匹配到了,后面不管如何都。)如果匹配成功返回匹配对象,否则返回None

4.search(正则表达式,字符串):在字符串中去查找第一个满足正则表达式要求的子串。如果找到了就返回匹配对象,否则None(只要的满足的一个,找到了就停止。)

5.split(正则表达式,字符串):按满足正则表达式的子串去切割字符串。

6.sub(正则表达式,替换字符串,字符串):返回值是新的字符串

7.findall(正则表达式,字符串):就是完整版的search()(获取所有满足的)返回值是列表。
注意:分组中的捕获效果在这个有效

4.正则里面的转义

注意:正则表达式中的转义和字符串中的转义字符没有任何关系。
在正则表达式中,可以通过在有特殊意义的符号前加''来表示符号本身

\+   \.   \*    \?   \\   \( \)  \[ \]  \^  \$  \|
1.'-'只有在中括号中的两个字符之间才有特殊意义。
2.如果特殊符号放在[]中作为字符集的内容,除了'-'在两个字符之间以外,其他的都不需要转义。
3.'\'不管在哪都需要转义
4.^放在[]最前面需要转义,不然表示非
str1 = r'a\+'

作业

1.IP匹配

re_str = r'(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3}'
print(re.fullmatch(re_str,'19.23.22.235'))
'''
<_sre.SRE_Match object; span=(0, 12), match='19.23.22.235'>
'''

2.邮箱匹配

re_str = r'^[0-9a-zA-Z]{,26}@[a-z]{,10}\.[a-z]{,5}'
print(re.fullmatch(re_str,'123txf@qq.com'))

'''
<_sre.SRE_Match object; span=(0, 13), match='123txf@qq.com'>
'''
  1. 计算一个字符串中所有的数字的和
    例如:字符串是:‘hello90abc 78sjh12.5’ 结果是90+78+12.5 = 180.5

def num_mach(str1):
    re_str = r'[-+]?[1-9]+[.]\d+|[+-]?\d+'
    result = re.findall(re_str,str1)
    sum = 0

    for num in result:
        sum += float(num)
    return sum

print(num_mach('hello90abc 78sjh12.5'))

180.5
  1. 验证输入的内容只能是汉字
re_str = r'[\u4E00-\u9FA5\\s]+'

print(re.fullmatch(re_str,'啥借口多好看教案'))
  1. 电话号码的验证
re_str = r'13[0-9]{8}|147\d{8}|15[0-9]\d{8}|18[1-9]\d{8}'
print(re.fullmatch(re_str,'18189898973'))
  1. 简单的身份证号的验证
re_str = r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$'
print(re.fullmatch(re_str,'528283826374758379'))

二、不定项选择题

  1. 能够完全匹配字符串“(010)-62661617”和字符串“01062661617”的正则表达式包括( A BD )

A. “(?\d{3})?-?\d{8}”
B. “[0-9()-]+”
C. “[0-9(-)]\d
D. “[(]?\d[)-]\d*”

re_str = r'\(?010\)?\-?62661617'
print(re.fullmatch(re_str,'(010)-62661617'))
  1. 能够完全匹配字符串“c:\rapidminer\lib\plugs”的正则表达式包括( BC )
    A. “c:\rapidminer\lib\plugs”
    B. “c:\rapidminer\lib\plugs”
    C. “(?i)C:\RapidMiner\Lib\Plugs” ?i:将后面的内容的大写变成小写
    D. “(?s)C:\RapidMiner\Lib\Plugs” ?s:单行匹配

  2. 能够完全匹配字符串“back”和“back-end”的正则表达式包括( ACD)
    A. “\w{4}-\w{3}|\w{4}” match->back,back-end fullmatch-> back,back-end
    B. “\w{4}|\w{4}-\w{3}” match-> back, back fullmatch-> back,back-end
    C. “\S+-\S+|\S+”
    D. “\w\b-\b\w|\w*”

  3. 能够完全匹配字符串“go go”和“kitty kitty”,但不能完全匹配“go kitty”的正则表达式包括(AD )
    :\1就是重复前面第一个()/组合里面的内容
    :\2就是重复前面第二个()/组合里面的内容
    A. “\b(\w+)\b\s+\1\b”
    B. “\w{2,5}\s*\1”
    C. “(\S+) \s+\1”
    D. “(\S{2,5})\s{1,}\1”

  4. 能够在字符串中匹配“aab”,而不能匹配“aaab”和“aaaab”的正则表达式包括( B,C)
    A. “a*?b”
    B. “a{,2}b”
    C. “aa??b”
    D. “aaa??b”

相关文章

  • 2018-09-11 day-17正则表达式(含作业)

    1.正则表达式 正则表达式就是用来检测字符串是否满足某种规则的工具。 2.正则语法 3.python对正则表达式的...

  • day-17 正则表达式

    1.什么是正则表达式正则表达式就是字符匹配的工具;是由正则符号和普通字符组成,来匹配不同规律的字符串 2.Pyth...

  • day-17正则表达式

    写一个正则表达式判断一个字符串是否是ip地址规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小...

  • day-17 正则表达式

    写一个正则表达式判断一个字符串是否是ip地址规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小...

  • 2018-09-11

    戴师傅 2018-09-11 2018-09-11 20:32 打开App (稻盛哲学学习会)打卡第131天 姓名...

  • 2018-09-11日记

    2018-09-11日记

  • day-17正则表达式总结

    1.什么是正则表达式(通用)正则就是一种用来做字符串匹配的工具,通过不同的符号匹配不同的字符 2.python对正...

  • Day-17正则表达式1

    正则表达式 1.正则表达式就是一种用来做字符串匹配的工具,通过不同的符号匹配不同的字符 2.python对正则表达...

  • 2018-12-11

    正则 正则表达式 作业

  • 2018-04-26正则表达式

    目录: Ⅰ:正则表达式 Ⅱ:作业 作业三:awk文本处理

网友评论

      本文标题:2018-09-11 day-17正则表达式(含作业)

      本文链接:https://www.haomeiwen.com/subject/vujygftx.html