本文共 1435 字,大约阅读时间需要 4 分钟。
. 可以匹配任何字符(除了换行)
[pj]ython 匹配python, jython。[a-zA-Z0-9] 只能匹配一个这样的字符。
[^abc]匹配除了a,b,c之外的字符。
python|perl == p(ython|erl) 子模式
子模式后面加 ?。就是非必须。
>>> r'(http://)?(www\.)?python\.org'(pattern)* 0次以上
(pattern)+ 1次以上
(pattern){m,n} 允许m~n次
^开头,$结尾
>>> text='"Hm...Err -- are you sure?" he sisai'>>> pat='[a-zA-Z]+'>>> import re>>> re.findall(pat, text)['Hm', 'Err', 'are', 'you', 'sure', 'he', 'sisai']
>>> pat=r'[.?\-",]+' #- 转义
>>> pat="{name}">>> text='Dear {name}...'>>> re.sub(pat, 'Mr Gumby', text)'Dear Mr Gumby...'>>>
>>> re.escape('www.python.org')'www\\.python\\.org'>>> re.escape('But where is the ambiguity')'But\\ where\\ is\\ the\\ ambiguity'组的序号取决于左侧的括号数。0是整个模式。范围1~99
>>> m=re.match(r'www\.(.*)\..{3}', 'www.python.org')>>> m.group(1)'python'>>> m.start(1)4>>> m.end(1)10>>> m.span(1)(4, 10)>>> m.group(2)Traceback (most recent call last): File "", line 1, in m.group(2)IndexError: no such group
>>> pat=r'\*([^\*]+)\*'>>> re.sub(pat, r'\1', 'Hello, *world*!')'Hello, world!'默认贪婪,尽可能多匹配。
>>> pat=r'\*(.+)\*'>>> re.sub(pat, r'\1', 'Hello, *This* is *it*!')'Hello, This* is *it!'匹配所有内容。更前面一种才行。
>>> pat=r'\*([^\*]+)\*'>>> re.sub(pat, r'\1', 'Hello, *This* is *it*!')'Hello, This is it!'加上? 变成非贪婪
>>> pat=r'\*\*(.+?)\*\*'>>> re.sub(pat, r'\1', 'Hello, **This** is **it**!')'Hello, This is it!'原始贪婪:
>>> pat=r'\*\*(.+)\*\*'>>> re.sub(pat, r'\1', 'Hello, **This** is **it**!')'Hello, This** is **it!'
转载地址:http://lqmmi.baihongyu.com/