正则表达式(读书过程所记未整理)
\d 表示一位数字字符 \d{3} 表示3个数字字符
匹配电话比如400-400-1118
import re
phone_number = re.compile(r'\d{3}-\d{3}-\d{4}')
mo = phone_number.search(r'for a number is 400-400-4000')
print(mo.group())
**********************************************************************
phone_number = re.compile(r('(\d{3})-(\d{3})-(\d{4})) 与之前的区别是进行了简单的分组
mo = phone_number.search(r'for a number is 400-400-4000')
print(mo.group(0), mo.group(1), mo.group(2))
*************************************************************************
|称为管道
?表明它前面的分组在这个模式中是可选的
batRegex = re.compile(r'Bat(wp)?man')
mo1 = batRegex.search('The Adventures of Batman')
mo1.group()
*表示匹配0次或多次
如:
bat = re.compile(r'Bat(wo)?man')
mo1 = bat.search(r'Batmanasxas')
mo1.group() ->>>>>Batman
mo1 = bat.search(r'Batwowowowowomanasxas')
mo1.group() ->>>>>Batwowowowowoman
+表明匹配一次或多次,
{}可以指定匹配的次数 {}通常是贪心匹配,在{}?则是最小匹配方式
\d 匹配数字
\D 除0-9的数字以外的任何字符
\w 在任何字母、数字或下划线字符
\W 除字母、数字和下划线以外的任何字符
\s 空格、制表符或换行符
\S 除空格、制表符或换行符
[^0123456789] 匹配除了数字之外的字符
no = re.compile(r'(.*)')
no.search('Servr the public trust.\n pasdasf\n').group() ->>>>>>>>>>>>>Servr the public trust.
no = re.compile(r'(.*), re.DOTALL)
no.search('Servr the public trust.\n pasdasf\n').group() ->>>>>>>>>>>>>>'Servr the public trust.\n pasdasf\n
?匹配零次或一次前面的分组。
*匹配零次或多次前面的分组。
+匹配一次或多次前面的分组。
{n}匹配 n 次前面的分组。
{n,}匹配 n 次或更多前面的分组。
{,m}匹配零次到 m 次前面的分组。
{n,m}匹配至少 n 次、至多 m 次前面的分组。
{n,m}?或*?或+?对前面的分组进行非贪心匹配。
^spam 意味着字符串必须以 spam 开始。
spam$意味着字符串必须以 spam 结束。
.匹配所有字符,换行符除外。
\d、 \w 和\s 分别匹配数字、单词和空格。
\D、 \W 和\S 分别匹配出数字、单词和空格外的所有字符。
[abc]匹配方括号内的任意字符(诸如 a、 b 或 c)。
[^abc]匹配不在方括号内的任意字符。
no = re.compile(r'robocop', re.I') 可以匹配任意大小写的字符串
*****************************************************************
def likestrip(text, chuqu=''):
if chuqu == '':
mod = re.compile(r'^*|(\s)*$')
if mod.search(text):
print(mod.sub('', text))
else:
mod = re.compile('^['+chuqu+']*|['+chuqu+']*$')
if mod.search(text):
print(mod.sub('', text))
print(text)
likestrip('wer ', 'w')
编写一个类似于strip()的函数