You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则提取阿拉伯语字符串中的有效日期(格式dd-month-yyyy)

实现方案

核心思路

该阿拉伯语日期提取需求可通过两步正则匹配实现:

  • 第一步先过滤字符串内所有HTML标签,得到纯文本日期内容
  • 第二步用带捕获组的正则提取目标字段,自动过滤星期、斜杠后的冗余月份内容

正则说明

核心匹配正则为:\b(\d{1,2})\s+([^\/]+)\/.*?\s+(\d{4})\b
各部分作用:

  • (\d{1,2}):捕获1~2位的日期数字(对应dd字段)
  • \s+:匹配日期和月份之间的空白字符
  • ([^\/]+):捕获斜杠之前的所有内容(对应需要保留的阿拉伯语月份名)
  • \/.*?\s+:匹配斜杠及后续冗余月份内容,直到遇到年份前的空白字符
  • (\d{4}):捕获4位年份数字(对应yyyy字段)

可直接运行的Python示例代码

import re

def extract_arabic_date(raw_html):
    # 移除所有HTML标签
    pure_text = re.sub(r'<[^>]+>', '', raw_html)
    # 匹配日期捕获组
    date_match = re.search(r'\b(\d{1,2})\s+([^\/]+)\/.*?\s+(\d{4})\b', pure_text)
    if date_match:
        day, month, year = date_match.groups()
        # 拼接为要求的dd-month-yyyy格式
        return f"{day}-{month.strip()}-{year}"
    # 匹配失败返回空值,可根据需求调整
    return None

# 测试示例
test_samples = [
    '<p>السبت 18 سبتمبر/أيلول 2021</p>',
    '<p class="schedule__date sub-heading">الثلاثاء 21 سبتمبر/أيلول 2021</p>',
    '<p class="schedule__date sub-heading">الأربعاء 22 سبتمبر/أيلول 2021</p>'
]

for sample in test_samples:
    print(extract_arabic_date(sample))

输出结果

18-سبتمبر-2021
21-سبتمبر-2021
22-سبتمبر-2021

扩展说明

如果需要把阿拉伯语月份转换为英文/中文月份,只需要额外添加月份映射表即可,示例:

month_mapping = {
    "سبتمبر": "September",
    # 按需补全其余11个月份的对应关系
}
# 拼接格式时替换即可
return f"{day}-{month_mapping.get(month.strip(), month.strip())}-{year}"

内容的提问来源于stack exchange,提问作者Mohamad A Sallal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:54:03