如何用正则表达式从固定格式字符串中提取人名和末尾对话内容
正则提取实现方案
你之前写的正则没有匹配固定的+++$+++分隔符,匹配逻辑太宽泛,所以无法得到预期结果。你可以用分组捕获的正则一次提取人名和对话内容,实现代码如下:
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
相关产品推荐
相关产品推荐

