如何用正则捕获含换行的Discord嵌入YouTube描述
正则修正方案
问题分析
你当前使用的正则/{Embed}(\n.+)+/无法完整匹配多行描述,核心原因是默认模式下.不识别换行符,且贪婪匹配的写法会导致内容在第一个换行后出现截断。
修正后的正则表达式
针对Discord消息的结构,要完整捕获{Embed}到下一条消息开头([MM/DD/YYYY HH:MM AM/PM])之间的所有内容,可使用以下正则:
/{Embed}\n((?:.|\n)+?)(?=\n\n\[|\Z)
规则说明
{Embed}\n:精准匹配嵌入标记及后续的换行符(?:.|\n)+?:非捕获组,匹配任意字符(包含换行),+?采用非贪婪模式,避免过度匹配到下一条消息内容(?=\n\n\[|\Z):正向预查,当检测到下一条消息的开头格式(\n\n[)或文本末尾(\Z)时停止匹配
代码实现示例(Python)
如果用Python处理,可开启re.DOTALL模式让.直接匹配换行符,简化正则写法:
import re # 读取Discord消息文本 discord_content = "你的Discord消息内容" # 编译正则 pattern = re.compile(r'{Embed}\n(.+?)(?=\n\n\[|\Z)', re.DOTALL) # 提取所有嵌入内容 embed_contents = pattern.findall(discord_content)
以上方案可以完整捕获YouTube嵌入里的多行描述,不会因换行导致内容截断。
内容的提问来源于stack exchange,提问作者violetinreal
相关产品推荐
相关产品推荐

