python 正则示例

2020/03/28 技术

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)

Search

    Table of Contents