Python正则表达式的实用技巧
正则表达式是Python中非常强大和灵活的文本处理工具。它可以用来在文本中搜索、提取、替换那些符合某些模式的字符串。这里我将介绍7个Python正则表达式的实用示例,并给出详细的代码注释,帮助大家更好地理解和运用正则表达式。
1. 验证邮箱地址
我们可以使用正则表达式来验证一个字符串是否为合法的邮箱地址:
import re email = "john@example.com" pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' match = re.match(pattern, email) if match: print("Valid Email") else: print("Invalid Email")
这里的正则表达式模式可以匹配像 john@example.com 这样的邮箱地址。
^
和$
分别匹配字符串的开始和结束[a-zA-Z0-9_.+-]+
可以匹配邮箱地址的用户名部分@
匹配字面上的 @ 符号[a-zA-Z0-9-]+
匹配邮箱服务提供商的域名\.
匹配一个点号[a-zA-Z0-9-.]+
匹配顶级域名如 com/cn
2. 提取电话号码
我们可以通过组匹配来提取文本中的电话号码:
import re text = "My number is 010-12345678" pattern = r'(\d{3,4}-\d{7,8})' match = re.search(pattern, text) if match: print(match.group(1))
(\d{3,4}-\d{7,8})
定义了一个匹配模式分组,它可以匹配形如010-12345678的电话号码match.group(1)
返回第一个子组匹配到的内容,即电话号码字符串
3. 替换敏感词汇
正则表达式的 sub() 方法可以实现替换文本中的指定词汇:
import re text = "Our company made $1000 in sales last month." pattern = r'\$[0-9]+' sub_text = re.sub(pattern, '[REDACTED]', text) print(sub_text) # Our company made [REDACTED] in sales last month.
这里我们将文本中的财务数据(如 $1000)替换为了 [REDACTED]。
4. 删除注释
要从代码中删除注释,可以:
import re code = "# This is a comment\nprint('Hello world')" pattern = r'#.*' cleaned_code = re.sub(pattern, '', code) print(cleaned_code) # print('Hello world')
#.*
匹配以 # 开头到行末的注释内容。
5. 解析网页标签
正则表达式可以解析、提取网页的标签内容:
html = "<p>Hello World</p>" pattern = r'<(\w+)>(.*?)</\1>' match = re.search(pattern, html) if match: print(match.group(1)) # p print(match.group(2)) # Hello World
这里使用了组匹配来分别提取标签名和标签内容。
6. 匹配重复的词
查找文本中重复出现的词汇:
import re text = "This is is a test string" pattern = r'\b(\w+)\s+\1\b' match = re.search(pattern, text) if match: print(match.group(1)) # is
\1
表示引用分组1匹配到的内容,所以可以找出重复的词。
7. 查找和替换
re.sub() 同时支持查找和替换:
import re text = "Today is 2021/01/01" pattern = r'(\d+)/(\d+)/(\d+)' new_text = re.sub(pattern, r'\3-\1-\2', text) print(new_text) # Today is 2021-01-01
这里我们同时提取了年、月、日字段,并将其改成了 YYYY-MM-DD 的格式。
以上是Python正则表达式的7个实用示例。正则表达式功能非常强大,这只是冰山一角,大家感觉收藏吧