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

正则表达式分组方法及教材文本正则提取转CSV格式问题

用正则分组提取文本并转换为CSV

嘿,我来帮你搞定这个正则分组提取的问题!根据你给出的示例文本和需求,我们可以通过精准的正则捕获组来提取对应字段,再输出成规范的CSV格式。

需求拆解

先明确每个列的提取规则:

  • col1: 文本开头到第一个逗号前的内容(示例里的agur)
  • col2: pi.之后、下一个逗号前的内容(示例里的aguren)
  • col3: subs.之后、Ex.:之前的内容(示例里的lune, mois)
  • col4: Ex.:之后的所有内容(示例里的arbd uaguren, quatre mois.)

正则表达式与分组说明

这里我们用带捕获组的正则来精准匹配:

^([^,]+), pi\. ([^,]+), subs\., (.+?) Ex\.: (.+)$

逐个解释每个捕获组的作用:

  • ([^,]+)(分组1):匹配第一个逗号前的所有非逗号字符,对应col1。用[^,]确保不会跨逗号匹配无关内容。
  • ([^,]+)(分组2):匹配pi. 之后到下一个逗号前的内容,对应col2。注意pi.里的.要转义成\.,因为.在正则中是匹配任意字符的特殊符号。
  • (.+?)(分组3):非贪婪模式匹配subs., 之后到Ex.:之前的内容,对应col3。用+?避免把后面的Ex.:也包含进来,确保只取到目标内容。
  • (.+)(分组4):匹配Ex.: 之后的所有剩余内容,对应col4,不管内容里有没有逗号。

代码实现(Python为例)

如果你用Python处理,可以结合re模块和csv模块来生成规范的CSV文件,自动处理带逗号的字段:

import re
import csv

# 示例文本
sample_text = "agur, pi. aguren, subs., lune, mois. Ex.: arbd uaguren, quatre mois."
# 正则模式
pattern = r'^([^,]+), pi\. ([^,]+), subs\., (.+?) Ex\.: (.+)$'

# 匹配文本
match_result = re.match(pattern, sample_text)
if match_result:
    # 获取所有分组内容
    col1, col2, col3, col4 = match_result.groups()
    # 生成CSV文件
    with open('textbook_extract.csv', 'w', newline='', encoding='utf-8') as csv_file:
        writer = csv.writer(csv_file)
        # 写入表头
        writer.writerow(["col1", "col2", "col3", "col4"])
        # 写入数据行(csv模块会自动给带逗号的字段加引号)
        writer.writerow([col1, col2, col3, col4])

运行这段代码后,生成的CSV内容会是:

col1,col2,col3,col4
agur,aguren,"lune, mois",arbd uaguren, quatre mois.

实用注意事项

  1. 转义特殊字符:正则里的.、?等特殊符号必须加反斜杠\转义,否则会匹配错误内容。
  2. 适配格式变体:如果教材文本里有空格差异(比如pi.后面有多个空格),可以把正则里的pi\. 改成pi\.\s+(\s+匹配任意数量的空白字符)。
  3. 批量处理多行:如果要处理整本教材的多行文本,可以用re.findall或者循环遍历每一行,逐个匹配提取内容后写入CSV。

内容的提问来源于stack exchange,提问作者gxmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:35:32