python 正则示例
1. 提取内容
使用 re.findall()
或者 re_pattern.findall()
提取匹配内容
- 提取url:
re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+').findall(content)
- 提取日期:
re.compile(r'[0-9]{4}-[0-9]{2}-[0-9]{2}').findall(content)
2. 替换内容
使用 re.sub()
对匹配内容进行替换。
- 删除文本开头的链接:
re.sub(r'^[\s]*http[s]?://www.abc.com/[0-9a-zA-Z]+', "", content)
- 删除文本中的空白符号:
re.sub('[\r\n\t]', '', content)
3. 用例举例
提取所有中文
re.compile("[\u4e00-\u9fa5]+").findall(input_text")
删除 中文 + 英文 + 数字 + _- 外 的其他字符:
re.compile("[^0-9a-zA-Z_\-\u4e00-\u9fa5]+").sub("", input_text)
提取时间
datetime_re = re.compile(
r'(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})'
r'[T ](?P<hour>\d{1,2}):(?P<minute>\d{1,2})'
r'(?::(?P<second>\d{1,2})(?:\.(?P<microsecond>\d{1,6})\d{0,6})?)?'
r'(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$'
)
match = datetime_re.match(value) # type: ignore
kw = match.groupdict()
print(kw["year"])
判断链接是否是图片
IMAGE_PATH_RE = re.compile(r'/?(?:[^/]+/)*(?:.+\.(?:mng|pct|bmp|gif|jpg|jpeg|'
r'png|pst|psp|tif|tiff|ai|drw|dxf|eps|ps|svg))')
IMAGE_PATH_RE.match(url.path)
文章内容多个空格替换为一个空格
re.compile(r"[\s]+").sub(" ", input_text)
提取标题
re.compile(
r'(\|[\w\u4e00-\u9fa5]{2,6}){0,3}\|[\w\u4e00-\u9fa5]+_(新浪新闻|新浪财经|新浪网|新浪科技|新浪\.\.\.|\.\.\.)$'
).match(input_text)