• Re——正则表达式_匹配项(pattern) and 模式(flag)


    匹配项(pattern):

    1、 (?=…) —> 如果匹配……匹配next,但不使用任何字符串。这称为前向断言。

    eg: >>> r = re.search('def(?=abc)','defabc')
    	>>> r.group()
    	'def'
    

    /* 注: 这个也是条件匹配只不过条件紧挨着要匹配字符串的后面!


    2、(?!..) —> 如果匹配……不匹配。这是一个否定的前向断言。

    eg: >>> r = re.search('def(?!abc)','defacc')
    	>>> r.group()
    	'def'
    

    2、(pattern_1)?(pattern_2)?(?(pattern_name(1、2……))yes|no) —> 例如表示如果pattern_name=pattern_1 则当pattern_1在子字符串
    出现时则(?(pattern_name)yes|no)去查找字符串后面出现的yes,
    否则则去查找字符串后面出现的no

    eg: >>> re.search('(12)? (?(1)12|)','12 12')
    		<_sre.SRE_Match object; span=(0, 5), match='12 12'>
    

    3、 (?<=…) —> 如果字符串中的当前位置前面有一个匹配的for…在当前位置结束。

    eg: >>> m = re.search('(?<=abc)def', 'abcdef')
    			>>> m.group(0)
    			'def'
    

    4、(?<!..) —> 如果字符串中的当前位置前面没有匹配for…则匹配。

    eg: >>> m = re.search('(?!<abc)def','assdef')
    	>>> m.group()
    	'def'
    

    5、 (?#…) —> 评论;括号中的内容将被忽略。


    6、 正则表达式中r’‘表示(字符) eg: 不是转义字符回车,从而更好地匹配,如果不用r’'则不使用转义字符时使用//(字符)
    eg: ‘\w’ —> 匹配一个字符

    eg: >>> r = re.search('(w+)+','foo.')
    	>>> type(r)
    	<class 'NoneType'>
    	------分割符------
    	>>> r = re.search(r'(w+)+','foo.')
    	>>> r.group()
    	'foo'
    	------分割符------
    	>>> r = re.search('(w+\b)+','foo.')
    	>>> r.group()
    	'foo'
    

    /* 注: 如果/(字符)在系统中无转义符意义,则不用(字符)
    eg: w 和 w 在正则表达式中匹配的效果一样,而 和  不同。
    如下为转义字符:
    a  f
    u U
    v x


    7、 umber —> 匹配叠词

    eg: >>> re.search(r'(w+)1','thethe')
    	<_sre.SRE_Match object; span=(0, 6), match='thethe'>
    

    8、 —> 匹配空字符串,但仅在单词的开头或结尾。单词被定义为Unicode字母数字或下划线字符的序列,因此单词的结尾由空格或非字母数字、非下划线Unicode字符表示。


    9、B —> 匹配空字符串,但仅当它不在单词的开头或结尾时才匹配。


    10、d —> 匹配任何Unicode十进制数字(即Unicode字符类别[Nd]中的任何字符)。


    11、 D —> 匹配任何非Unicode十进制数字的字符。这是d的反义词。


    12、 s —> 匹配Unicode空白字符(其中包括[ fv],以及许多其他字符,例如许多语言中排版规则强制要求的不间断空格)。如果使用ASCII标志,则只匹配[ fv]。


    13、S —> 匹配任何非Unicode空白字符。这是s的反义词。


    14、 w —> 匹配Unicode单词字符;这包括任何语言中可以作为单词一部分的大多数字符,以及数字和下划线。如果使用ASCII标志,则只匹配[a- za - z0 -9_]


    15、W —> 匹配任何非Unicode单词字符。这是w的反义词。
    如果使用ASCII标志,它就相当于[^a- za - z0 -9_]


    16、A —> 仅在字符串的开头匹配。


    17、 —> 仅在字符串末尾匹配。


    模式(flag):

    1、 re.A(只匹配ascii)
    —> 使w、w、、、d、d、s和s只执行ascii匹配,而不执行完整的Unicode匹配。这只对Unicode模式有意义,而对字节模式则忽略不计。


    2、 re.I(忽略字母大小写)


    3、 re.DEBUG
    —> 显示有关已编译表达式的调试信息。


    4、 re.S/re.DOTALL
    —> 使’.'特殊字符匹配任何字符,包括换行;没有这个flag,
    '.'将匹配除换行以外的任何内容。


    5、 re.L(语言环境相关)


    6、 re.M/MULTILINE(多行)
    —> 当指定时,模式字符’^'匹配字符串的开头和每行的开头(紧接每行换行之后);模式字符“$”匹配字符串的末尾和每行的末尾(紧接在每行换行之前)。


    7、 re.X(详细)
    —> 可视化操作,不是太重要,具体件PythonDocs


    ————2020年4月12日 XXX

  • 相关阅读:
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    为你的react项目添加路由
  • 原文地址:https://www.cnblogs.com/free-soul/p/12864083.html
Copyright © 2020-2023  润新知