目录 常用的RegEx基础语法 常用的RegEx函数 以下为部分示例: 总结 Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明 常用的RegEx基础语法 语法
目录
- 常用的RegEx基础语法
- 常用的RegEx函数
- 以下为部分示例:
- 总结
Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明
常用的RegEx基础语法
常用的RegEx函数
以下为部分示例:
对于split函数,我们在对字符串进行分割的时候可以直接调用split方法,再次不再进行
>>> import re#导入包 >>> a='xiaoming:wo jiao xiaoming,wo de dianhua shi +86-666666' >>> print(re.search(pattern='\d+\W\d+',string=a)) <re.Match object; span=(45, 54), match='86-666666'>#此处输出的时一个match对象 >>> mp=re.search(pattern='\d+\W\d+',string=a)#查找电话号码 >>> print(mp.group())#使用group方法获取于指定模式相匹配的字符串 86-666666 >>> print(mp.start())#获取第一个匹配字符串的索引 45 >>> print(mp.end())#获取匹配字符串的 54 >>> print(mp.span())#获取索引范围 (45, 54) >>> print(re.findall(pattern='\w+',string=a)) ['xiaoming', 'wo', 'jiao', 'xiaoming', 'wo', 'de', 'dianhua', 'shi', '86', '666666'] >>> m_sub=re.sub(pattern='\w+:',string=a,repl='xiaohong:')#模式替代,使用repl传入的字符串替代匹配到的第一个字符串 >>> print(m_sub) xiaohong:wo jiao xiaoming,wo de dianhua shi +86-6666 #编译模式 >>> p=re.compile('\d{6}')#预先设定好匹配的模式 >>> m1=p.search(a)#对预先设定好的模式调用查找 >>> print(m1.group())获取查找到的字符串 666666
不区分大小写匹配字符
#! /usr/bin/python3 import re rebocop = re.compile(r'rebocop', re.I) match = rebocop.search('ReboCop is part man, part machine, all cop.').group() print(match)
管理复杂的正则表达式
如果您需要匹配的文本模式很简单,则正则表达式很好。但是匹配复杂的文本模式可能需要冗长,复杂的正则表达式。您可以通过告诉 re.compile() 函数来缓解这种情况忽略正则表达式字符串中的空格和注释。可以通过将变量 re.VERBOSE 作为传递来启用此“详细模式” re.compile()的第二个参数。
#! /usr/bin/python3 import re phoneRegex = re.compile(r'''( (\d{3}|\(\d{3}\))? # area code (\s|-|\.)? # separator \d{3} # first 3 digits (\s|-|\.) # separator \d{4} # last 4 digits (\s*(ext|x|ext.)\s*\d{2,5})? #extension )''', re.VERBOSE)
请注意前一个示例如何使用三引号语法(’’’)创建一个多行字符串,以便您可以将正则表达式定义分布在多行上,使其更加清晰。正则表达式字符串中的注释规则与常规Python代码:#符号及其后的所有内容线被忽略。此外,正则表达式的多行字符串内的额外空格不被视为要匹配的文本模式的一部分。这使您可以组织正则表达式,以便更容易阅读。
从粘贴板的文字中提取邮箱和手机号码
#! /usr/bin/python3 # phoneAndEmail.py - Finds phone numbers and email address on the chipboard. import pyperclip, re americaPhoneRegex = re.compile(r'''( (\d{3}|\(\d{3}\))? # area code (\s|-|\.)? # separator (\d{3}) # first 3 digits (\s|-|\.) # separator (\d{4}) # last 4 digits (\s*(ext|x|ext.)\s*(\d{2,5}))? # extension )''', re.VERBOSE) chinesePhoneRegex = re.compile(r'1\d{10}') emailPhoneRegex = re.compile(r'''( [a-zA-Z0-9._%+-]+ # username @ # @ symbol [a-zA-Z0-9.-]+ # domain name (\.[a-zA-Z]{2,4}) # dot-something )''', re.VERBOSE) # Find matches in clipboard text. text = str(pyperclip.paste()) matches = [] for groups in americaPhoneRegex.findall(text): phoneNum = '-'.join([groups[1], groups[3], groups[5]]) if groups[8] != '': phoneNum += ' x' + groups[8] matches.append(phoneNum) for groups in emailPhoneRegex.findall(text): matches.append(groups[0]) for groups in chinesePhoneRegex.findall(text): matches.append(groups[0]) # copy results the clipboard. if len(matches) > 0: pyperclip.copy('\n'.join(matches)) print('Copied to clipboard:') print('\n'.join(matches)) else: print('No phone numbers or email addresses found.')
总结
到此这篇关于python正则表达式对字符串的查找匹配的文章就介绍到这了,更多相关python字符串查找匹配内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!