python学习笔记(四)-----正则表达式

import re
xxRegex=re.compile(xxxxxxxxxx)
result=xxRegex.search(onestring)
print(result.group())

1.用()分组,分组后可用result.group(int)区分

import re
s="123-1234dsf234-3456-4567dg111-11111"
c=re.compile(r'(\d\d\d)-(\d\d\d\d)')
result=c.search(s)
print(result.groups())
print(result.group(0))
print(result.group(1))
print(result.group(2))
'''
('123', '1234')
123-1234
123
1234
'''

2.用管道匹配多个分组

  • 字符‘|’称为管道
  • regex=re.compile(r'a|b')
  • 此句中可匹配a或b
  • regex=re.compile(r'asd(aaa|bbb|ccc)')此句asdaaa,asdbbb,asdccc都可进行匹配

3.符号

  • ?匹配零次或一次前面的分组
  • *匹配零次或多次前面的分组
  • +匹配一次或多次前面的分组
  • {n}匹配n次前面的分组
  • {n,}匹配n次及以上前面的分组
  • {,n}匹配零次至n次前面的分组
  • {n,m}匹配n次至m次前面的分组
  • {n,m}?或*?或+?对前面的分组进行非贪心匹配
  • ^spam意味着字符串必须以spam开始
  • spam$意味着字符串必须以spam结束
  • .匹配除换行符外所有字符
  • \d,\w和\s分别匹配数字、单词和空格
  • \D,\W和\S分别匹配数字、单词和空格外的所有字符
  • [abc]匹配中括号内的任意字符
  • [^abc]匹配不在中括号内的任意字符
  • .*可以匹配所有字符
  • .*?非贪心匹配所有字符
  • re.I/re.IGNORECASE向search的第二参数传入此值可忽略大小写进行匹配 

4.findall()

search()只返回一个匹配,findall()返回全部匹配于一列表中。

5.sub()

sub中第一个参数为要替换字符串,第二参数为原字符串。使用后将匹配处替换为第一参数字符串。

6.复杂化

向re.compile()中传入re.VERBOSE可忽略正则表达式中的空格换行符。

regex=re.compile(r'''(
            (123)-
            (\d\d\d)-
            ([asdfg]*)
            )''',re.VERBOSE)

7.两个或

regex=re.compile(xxx,re.IGNORECASE|re.DOTALL|re.VERBOSE)

猜你喜欢

转载自blog.csdn.net/wenmiao_/article/details/82822824