RE使用大致步骤

  • 使用complic将表示正则的字符串编译未一个pattern对象
  • 通过pattern对象提供一系列方法对文本进行查找和匹配,获得匹配结果,一个Match对象,最后使用Match对象提供的属性和放大获得信息,根据需要进行操作 #RE常用函数
  • group():获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,直接使用group或group(0)
  • start: 获取分组匹配的子串再整个字符中的真实位置,参数默认为0
  • end: 获取分组匹配的子串在整个字符串中的结束位置,默认为0
  • span:返回的结构技术(start(group),end(group))
import re
help(re)

Help on module re:NAMEre - Support for regular expressions (RE).DESCRIPTIONThis module provides regular expression matching operations similar tothose found in Perl.  It supports both 8-bit and Unicode strings; boththe pattern and the strings being processed can contain null bytes andcharacters outside the US ASCII range.Regular expressions can contain both special and ordinary characters.Most ordinary characters, like "A", "a", or "0", are the simplestregular expressions; they simply match themselves.  You canconcatenate ordinary characters, so last matches the string 'last'.The special characters are:"."      Matches any character except a newline."^"      Matches the start of the string."$"      Matches the end of the string or just before the newline atthe end of the string."*"      Matches 0 or more (greedy) repetitions of the preceding RE.Greedy means that it will match as many repetitions as possible."+"      Matches 1 or more (greedy) repetitions of the preceding RE."?"      Matches 0 or 1 (greedy) of the preceding RE.*?,+?,?? Non-greedy versions of the previous three special characters.{m,n}    Matches from m to n repetitions of the preceding RE.{m,n}?   Non-greedy version of the above."\\"     Either escapes special characters or signals a special sequence.[]       Indicates a set of characters.A "^" as the first character indicates a complementing set."|"      A|B, creates an RE that will match either A or B.(...)    Matches the RE inside the parentheses.The contents can be retrieved or matched later in the string.(?aiLmsux) Set the A, I, L, M, S, U, or X flag for the RE (see below).(?:...)  Non-grouping version of regular parentheses.(?P<name>...) The substring matched by the group is accessible by name.(?P=name)     Matches the text matched earlier by the group named name.(?#...)  A comment; ignored.(?=...)  Matches if ... matches next, but doesn't consume the string.(?!...)  Matches if ... doesn't match next.(?<=...) Matches if preceded by ... (must be fixed length).(?<!...) Matches if not preceded by ... (must be fixed length).(?(id/name)yes|no) Matches yes pattern if the group with id/name matched,the (optional) no pattern otherwise.The special sequences consist of "\\" and a character from the listbelow.  If the ordinary character is not on the list, then theresulting RE will match the second character.\number  Matches the contents of the group of the same number.\A       Matches only at the start of the string.\Z       Matches only at the end of the string.\b       Matches the empty string, but only at the start or end of a word.\B       Matches the empty string, but not at the start or end of a word.\d       Matches any decimal digit; equivalent to the set [0-9] inbytes patterns or string patterns with the ASCII flag.In string patterns without the ASCII flag, it will match the wholerange of Unicode digits.\D       Matches any non-digit character; equivalent to [^\d].\s       Matches any whitespace character; equivalent to [ \t\n\r\f\v] inbytes patterns or string patterns with the ASCII flag.In string patterns without the ASCII flag, it will match the wholerange of Unicode whitespace characters.\S       Matches any non-whitespace character; equivalent to [^\s].\w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]in bytes patterns or string patterns with the ASCII flag.In string patterns without the ASCII flag, it will match therange of Unicode alphanumeric characters (letters plus digitsplus underscore).With LOCALE, it will match the set [0-9_] plus characters definedas letters for the current locale.\W       Matches the complement of \w.\\       Matches a literal backslash.This module exports the following functions:match     Match a regular expression pattern to the beginning of a string.fullmatch Match a regular expression pattern to all of a string.search    Search a string for the presence of a pattern.sub       Substitute occurrences of a pattern found in a string.subn      Same as sub, but also return the number of substitutions made.split     Split a string by the occurrences of a pattern.findall   Find all occurrences of a pattern in a string.finditer  Return an iterator yielding a match object for each match.compile   Compile a pattern into a RegexObject.purge     Clear the regular expression cache.escape    Backslash all non-alphanumerics in a string.Some of the functions in this module takes flags as optional parameters:A  ASCII       For string patterns, make \w, \W, \b, \B, \d, \Dmatch the corresponding ASCII character categories(rather than the whole Unicode categories, which is thedefault).For bytes patterns, this flag is the only availablebehaviour and needn't be specified.I  IGNORECASE  Perform case-insensitive matching.L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.M  MULTILINE   "^" matches the beginning of lines (after a newline)as well as the string."$" matches the end of lines (before a newline) as wellas the end of the string.S  DOTALL      "." matches any character at all, including the newline.X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.U  UNICODE     For compatibility only. Ignored for string patterns (itis the default), and forbidden for bytes patterns.This module also defines an exception 'error'.CLASSESbuiltins.Exception(builtins.BaseException)sre_constants.errorclass error(builtins.Exception)|  Exception raised for invalid regular expressions.|  |  Attributes:|  |      msg: The unformatted error message|      pattern: The regular expression pattern|      pos: The index in the pattern where compilation failed (may be None)|      lineno: The line corresponding to pos (may be None)|      colno: The column corresponding to pos (may be None)|  |  Method resolution order:|      error|      builtins.Exception|      builtins.BaseException|      builtins.object|  |  Methods defined here:|  |  __init__(self, msg, pattern=None, pos=None)|      Initialize self.  See help(type(self)) for accurate signature.|  |  ----------------------------------------------------------------------|  Data descriptors defined here:|  |  __weakref__|      list of weak references to the object (if defined)|  |  ----------------------------------------------------------------------|  Methods inherited from builtins.Exception:|  |  __new__(*args, **kwargs) from builtins.type|      Create and return a new object.  See help(type) for accurate signature.|  |  ----------------------------------------------------------------------|  Methods inherited from builtins.BaseException:|  |  __delattr__(self, name, /)|      Implement delattr(self, name).|  |  __getattribute__(self, name, /)|      Return getattr(self, name).|  |  __reduce__(...)|      helper for pickle|  |  __repr__(self, /)|      Return repr(self).|  |  __setattr__(self, name, value, /)|      Implement setattr(self, name, value).|  |  __setstate__(...)|  |  __str__(self, /)|      Return str(self).|  |  with_traceback(...)|      Exception.with_traceback(tb) --|      set self.__traceback__ to tb and return self.|  |  ----------------------------------------------------------------------|  Data descriptors inherited from builtins.BaseException:|  |  __cause__|      exception cause|  |  __context__|      exception context|  |  __dict__|  |  __suppress_context__|  |  __traceback__|  |  argsFUNCTIONScompile(pattern, flags=0)Compile a regular expression pattern, returning a pattern object.escape(pattern)Escape all the characters in pattern except ASCII letters, numbers and '_'.findall(pattern, string, flags=0)Return a list of all non-overlapping matches in the string.If one or more capturing groups are present in the pattern, returna list of groups; this will be a list of tuples if the patternhas more than one group.Empty matches are included in the result.finditer(pattern, string, flags=0)Return an iterator over all non-overlapping matches in thestring.  For each match, the iterator returns a match object.Empty matches are included in the result.fullmatch(pattern, string, flags=0)Try to apply the pattern to all of the string, returninga match object, or None if no match was found.match(pattern, string, flags=0)Try to apply the pattern at the start of the string, returninga match object, or None if no match was found.purge()Clear the regular expression cachessearch(pattern, string, flags=0)Scan through string looking for a match to the pattern, returninga match object, or None if no match was found.split(pattern, string, maxsplit=0, flags=0)Split the source string by the occurrences of the pattern,returning a list containing the resulting substrings.  Ifcapturing parentheses are used in pattern, then the text of allgroups in the pattern are also returned as part of the resultinglist.  If maxsplit is nonzero, at most maxsplit splits occur,and the remainder of the string is returned as the final elementof the list.sub(pattern, repl, string, count=0, flags=0)Return the string obtained by replacing the leftmostnon-overlapping occurrences of the pattern in string by thereplacement repl.  repl can be either a string or a callable;if a string, backslash escapes in it are processed.  If it isa callable, it's passed the match object and must returna replacement string to be used.subn(pattern, repl, string, count=0, flags=0)Return a 2-tuple containing (new_string, number).new_string is the string obtained by replacing the leftmostnon-overlapping occurrences of the pattern in the sourcestring by the replacement repl.  number is the number ofsubstitutions that were made. repl can be either a string or acallable; if a string, backslash escapes in it are processed.If it is a callable, it's passed the match object and mustreturn a replacement string to be used.template(pattern, flags=0)Compile a template pattern, returning a pattern objectDATAA = <RegexFlag.ASCII: 256>ASCII = <RegexFlag.ASCII: 256>DOTALL = <RegexFlag.DOTALL: 16>I = <RegexFlag.IGNORECASE: 2>IGNORECASE = <RegexFlag.IGNORECASE: 2>L = <RegexFlag.LOCALE: 4>LOCALE = <RegexFlag.LOCALE: 4>M = <RegexFlag.MULTILINE: 8>MULTILINE = <RegexFlag.MULTILINE: 8>S = <RegexFlag.DOTALL: 16>U = <RegexFlag.UNICODE: 32>UNICODE = <RegexFlag.UNICODE: 32>VERBOSE = <RegexFlag.VERBOSE: 64>X = <RegexFlag.VERBOSE: 64>__all__ = ['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'fi...VERSION2.2.1FILEd:\programdata\anaconda3\lib\re.py

#导入相关包
import re
#查找数字
# r表示字符串不转义
p = re.compile(r'\d+')
#在字符串“one12twothree33456four78”中进行查找,按照规则p制定的正则进行查找
#参数3,6表示字符串中的查找范围
m = p.match("one12twothree33456four78", 3, 26)
print(m)
#match可以输入参数表示起始位置
#match查找结果只有一个,即第一次匹配成功的内容

<_sre.SRE_Match object; span=(3, 5), match='12'>

print(m[0])
print(m.start())#起始
print(m.end())#结束

12
3
5

import re
p = re.compile(r'([a-z]+) ([a-z]+)', re.I)#([a-z]+)之间有空格 I表示忽略大小写
m = p.match("I am really love wangxiaojing")
print(m)

<_sre.SRE_Match object; span=(0, 4), match='I am'>

print(m.group(0))
print(m.start())#起始
print(m.end())#结束

I am
0
4

print(m.group(1))
print(m.start(1))
print(m.end(1))

I
0
1

查找

  • search(str,[,pos[, endpos]]):在字符串中查找匹配,pos和endpos表示起始位置
  • findall: 查找所有
  • finditer: 查找,返回一个iter结果
import re
p = re.compile(r'\d+')
m = p.search("one12twothree33456four78")
print(m.group())

12

rst = p.findall("one12twothree33456four78")
print(type(rst))
print(rst)

<class 'list'>
['12', '33456', '78']

sub 替换

  • sub(rep1, str[, count])
import re
p = re.compile(r'(\w+) (\w+)')
s = "hello 123 wang 456 xiaojing, i love you"
rst = p.sub(r'Hello world', s)
print(rst)

Hello world Hello world xiaojing, Hello world you

匹配中文

  • 大部分中文内容表示范围是[u4e00-u9fa5],不包括全角标点
import re
title = u'世界 你好, hello moto'
p = re.compile(r'[\u4e00-\u9fa5]+')
rst = p.findall(title)
print(rst)

['世界', '你好']

贪婪和非贪婪

  • 贪婪:尽可能多的匹配,(*)表示贪婪匹配
  • 非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪
  • 正则默认使用贪婪匹配
import re
title = u'<div>name</div><div>age</div>'
p1 = re.compile(r"<div>.*</div>")
p2 = re.compile(r"<div>.*?</div>")
m1 = p1.search(title)
print(m1.group())
m2 = p2.search(title)
print(m2.group())

<div>name</div><div>age</div>
<div>name</div>

转载于:https://www.cnblogs.com/Gulidon/p/9317423.html

最新文章

  1. Windows Socket编程笔记之最简单的小Demo
  2. python绘制3维图-Python 绘制 3 维以上的高维图
  3. ERP与全面预算管理如何结合
  4. NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
  5. HttpServletRequest中getAttribute()和getParameter()的区别
  6. 代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)
  7. 多线程编程—线程池的实现
  8. centos7.5 su: 无法设置组: 不允许的操作(实测补充)(这是乱获取权限导致的,要注意权限问题)以及推荐文件操作
  9. 大数据之_SCALA工作笔记001---Centos7.3安装scala
  10. 功能测试分析和测试用例编写模板
  11. BT5 autoscan genlist ADMsnmp snmpcheck使用
  12. win10操作系统上编译assimp库
  13. 在Debian Linux下用MAME模拟器玩街机游戏
  14. 南唐后主李煜诗词选编
  15. AMD和英特尔cpu区别
  16. 什么样的公司程序员待遇好
  17. 单片机学习笔记(五)—— 键盘
  18. 谷歌浏览器导出导入插件
  19. 2021最火爆带字微信朋友圈背景
  20. BlockingQueue 使用

热门文章

  1. debian 修改apache2 https 端口为11443
  2. js两个日期对比大小
  3. 设计图案之间关系的代码实现
  4. openfire 详细介绍一
  5. (转)Inno Setup入门(七)——提供安装语言选项
  6. ORACLE EXP/IMP的使用详解 (解决9i(window)导入到10G的乱码问题)
  7. Windows Server 2003 来配置网络地址转换 (NAT
  8. 对于开发 0 bug 代码的思考——Design by Contract 契约设计
  9. 稳的一比,鸿蒙系统霸榜Github!
  10. MySQL 的慢 SQL 怎么优化?