• Re——正则表达式_方法(method)


    方法(method):

    1、 re.compile(pattern, flags=0)
    —> 将一个正则表达式模式编译成一个正则表达式对象,该对象可以使用下面描述的match()和search()方法进行匹配。

    eg: >>> r = re.compile('d+',re.A)
    

    2、re.match(pattern, str, flag=0)
    —> 搜索str开头是否满足pattern,满足则返回信息,不满足则返回NoneType。
    /* 注: 注意,即使在多行模式下,re.match()也只匹配字符串的开头,而不匹配每行的开头。

    eg: >>> r = re.match('d+', '123', re.DEBUG)
    	MAX_REPEAT 1 MAXREPEAT
    	  IN
    		CATEGORY CATEGORY_DIGIT
    	>>> r.group()
    	'123'
    

    3、 re.search(pattern, str, flag=0)
    —> 在全局里搜索满足pattern的str的子字符串,有则返回第一个满足的子字符串的信息,没有则返回NoneType

    eg: >>> r = re.search('d','a1b2c3')
    	>>> r.group()
    	'1'
    

    4、re.fullmatch(pattern, str, flag=0)
    —> 如果整个字符串匹配正则表达式模式,则返回相应的match对象。如果字符串与模式不匹配,则返回None。
    /* 注: 这与零长度匹配不同。

    eg: >>> r = re.fullmatch('d+','123w')
    	>>> type(r)
    	<class 'NoneType'>
    	>>> r = re.fullmatch('d+', '123')
    	>>> r.group()
    	'123'
    

    5、 re.split(pattern, string, maxsplit=0, flag=0)
    —> 通过模式的出现来分割字符串。如果模式中使用了捕捉括号,那么模式中所有组的文本也将作为结果列表的一部分返回。如果maxsplit是非零的,则最多执行maxsplit拆分,并将字符串的其余部分作为列表的最后一个元素返回。

    eg: >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
    	['0', '3', '9']
    

    /* 注: 如果分隔符中有捕获的组,并且它在字符串的开头匹配,那么结果将以空字符串开始。同样的道理也适用于字符串的结尾。

    eg: >>> re.split('(W+)', '...words, words...')
    	['', '...', 'words', ', ', 'words', '...', '']
    

    6、re.findall(pattern, str, flag=0)
    —> 返回字符串中模式的所有非重叠匹配,作为字符串列表。从左到右扫描字符串,并按照找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。

    eg: >>> re.findall('d+','123asd456asd789')
    	['123', '456', '789']
    	>>> re.findall('d*','123asd456asd789')
    	['123', '', '', '', '456', '', '', '', '789', '']
    

    /* 注: 第二式子是因为’*‘表示匹配[0, +∞),所以在匹配到’a’的时候,就匹配0所以为空’’。


    7、re.finditer(pattern, string, flags=0)
    —> 返回一个迭代器,为字符串中的RE模式在所有非重叠匹配上生成匹配对象。效果跟findall差不多,只不过这个返回的是包含多个match的迭代器。

    eg: >>> for each in re.finditer('d+','123asd456asd789'):
    			print(each.group())
    	123
    	456
    	789
    

    8、 re.sub(pattern, repl, string, count=0, flags=0)
    —> 取用pattern从前到后匹配string,如果匹配到,则用repl去替换匹配到的string的子字符串,重复直到string的最后一个字符。

    eg:	>>> re.sub(r'd*','5','123abc')
    	'5a5b5c5'
    	>>> re.sub(r'd+','5','123abc')
    	'5abc'
    	>>> re.sub(r'd*','5','123abc',2)
    	'5a5bc'
    

    /* 注: 类似findall那里的注释,’*‘匹配[0,+∞),所以会产生一个空字符,然后空字符又会被repl替代,所以上述第一个式子是’5a5b5c5’。
    /* 注: repl可以为函数

    eg: >>> def dashrepl(matchobj):
    			if matchobj.group(0) == '-': return ' '
    			else: return '-'
    	>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
    	'pro--gram files'
    

    9、 re.subn(pattern, repl, string, count=0, flags=0)
    —> 与re.sub相类似,只是返回的对象为tuple (new_string, number_of_subs_made).。

    eg: >>> re.subn(r'd*','5','123abc')
    	('5a5b5c5', 4)
    

    10、re.escape(string)
    —> 转义除ASCII字母、数字和“_”外的所有模式字符。如果您想要匹配一个可能包含正则表达式元字符的任意文字字符串,这是非常有用的。

    eg: >>> re.escape('www.python.org')
    	'www\.python\.org'
    	>>> re.findall(re.escape('w.py'),"jw.pyji w.py.f")
    	['w.py', 'w.py']
    

    11、 re.purge()
    —> 清除正则表达式的缓存。


    ————2020年4月12日 XXX

  • 相关阅读:
    感知机预测NBA总冠军
    java 一维数组
    2020-11-25
    2020-11-24学习日记
    Java语言概述
    人脸情绪识别系统---测试心得
    结对编程,问题不大
    结对编程之队友代码赏析
    项目测试心得——基于微信的图书销售小程序
    数据库设计心得
  • 原文地址:https://www.cnblogs.com/free-soul/p/12864082.html
Copyright © 2020-2023  润新知