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)