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

如何用正则表达式从固定格式字符串中提取人名和末尾对话内容

正则提取实现方案

你之前写的正则没有匹配固定的+++$+++分隔符,匹配逻辑太宽泛,所以无法得到预期结果。你可以用分组捕获的正则一次提取人名和对话内容,实现代码如下:

import re

dialogue = "L1045 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!"
name : str = ""
line : str = ""

# 正则分组匹配:跳过前3个分隔段,分别捕获人名和对话内容
match_obj = re.match(r'^(?:[^+]+\+{3}\$\+{3}\s*){3}(\w+)\s*\+{3}\$\+{3}\s*(.+)$', dialogue)
if match_obj:
    name = match_obj.group(1)
    line = match_obj.group(2)

print(name) # 输出:BIANCA
print(line) # 输出:They do not!

正则说明:

  • (?:[^+]+\+{3}\$\+{3}\s*){3}:非捕获组,匹配前3段带分隔符的内容,?:表示不需要保存该组匹配结果
  • (\w+):第一个捕获组,匹配人名
  • (.+):第二个捕获组,匹配末尾的全部对话内容

更简便的实现

因为你的字符串分隔符+++$+++是固定的,不需要写复杂正则,直接分割字符串即可:

dialogue = "L1045 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!"
parts = dialogue.split(' +++$+++ ')
name = parts[3]
line = parts[4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:27:01