zoukankan      html  css  js  c++  java
  • Python: 正则表达式

    1.了解正则表达式

    正则表达式是对字符串操作的一种逻辑公式,是用来匹配字符串的非常强大的工具,利用正则表达式来提取想要的内容。

    正则表达式的大致匹配过程如下

    1)依次拿出表达式和文本中的字符比较

    2)如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

    3)如果表达式中有量词或边界,这个过程会稍微有些不同。

    2.正则表达式的语法规则

    1)  . 匹配任意字符

    eg:

    >>>m=re.match(r'a.','a99')

    >>>m

    <-sre.SRE_Match object;span=(0,2),match='a9'>

    2)  ^ 匹配字符串开头 

    eg:

    >>>m=re.match(r'^a','a99')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='a'>

    3)  $ 匹配字符串结尾

    eg:

    >>>m=re.match(r'.*?a$','a99a')

    >>>m

    <-sre.SRE_Match object;span=(0,4),match='a99a'>

    4)  | 逻辑或操作符

    eg:

    >>>m=re.match(r'a|A','A99')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='A'>

     

    5)  [] 匹配内部的任一字符或者子表达式

    eg1:

    >>>m=re.match(r'[a-z]+','dgfjjghhj')

    >>>m

    <-sre.SRE_Match object;span=(0,9),match='dgfjjghhj'>

    eg2:

    >>>m=re.match(r'[a-z]','dgfjjghhj')

    >>>m

    <-sre.SRE_Match object;span=(0,9),match='d'>

     

    6)  [^] 对字符集合取非

    eg:

    >>>m=re.match(r'[^a-zA-Z0-9]+','@dgfjjghhj')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='@'>

     

    7)  - 定义一个区间

    eg:

    >>>m=re.match(r'[^a-zA-Z0-9]+','@dgfjjghhj')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='@'>

     

    8)   对下一字符取非(通常是普通变特殊,特殊变普通)

    eg:

    >>>m=re.match(r'\','\abc')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='\'>

     

    9)  * 匹配前面的字符或者子表达式0次或者多次

    eg:

    >>>m=re.match(r'[a-zA-Z0-9]+','dgfjjghhj')

    >>>m

    <-sre.SRE_Match object;span=(0,9),match='dgfjjghhj'>

     

    10)  ? 匹配前面的字符或者子表达式0次或者1次

    eg:

    >>>m=re.match(r'a?','dgfjjghhj')

    >>>m

    <-sre.SRE_Match object;span=(0,0),match=''>

    字符串里没有a也能匹配的上

    11)  *? 惰性匹配上一个

    匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

    >>>m=re.match(r'a*?','aa')

    >>>m

    <-sre.SRE_Match object;span=(0,0),match=''>

    这是我在py 解释器里结果,我不知道什么原因一次都没匹配,如果谁知道,请留评论,谢谢

     

    12)  +? 惰性匹配上一个

    eg1:

    >>>m=re.match(r'a+?','aaa')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='a'>

    匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

    eg2:

    >>>m=re.match(r'a+','aaa')

    >>>m

    <-sre.SRE_Match object;span=(0,3),match='aaa'>

     13)  + 匹配上一个字符或者子表达式一次或者多次

    eg1:

    >>>m=re.match(r'a+','aaa')

    >>>m

    <-sre.SRE_Match object;span=(0,3),match='aaa'>

    eg1:

    >>>m=re.match(r'a','aaa')

    >>>m

    <-sre.SRE_Match object;span=(0,1),match='a'>

     

     

    未完待续

     

  • 相关阅读:
    Java知识积累3-XML的DOM解析修改和删除方法
    Java知识积累-XML的DOM解析修改和删除方法
    Java知识积累2-StringReverse实现文字(单词)倒叙输出
    Java知识积累1-StringAlign实现文字居中左右对齐
    String中具有的方法
    有17个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 的是原来第几号的那位
    编写一个程序,求出整数数组中最小元素的下标。如果这样的元素个数大于1,则返回下标最小的数的下标。
    初识
    关于点击跳转页面
    sql存储过程
  • 原文地址:https://www.cnblogs.com/baxianhua/p/8329615.html
Copyright © 2011-2022 走看看