求助:使用REGEX将影视数据解析为三列的正则表达式问题
解决影视数据正则解析问题
针对你提供的影视条目,要解析为主标题、年份、附加信息三列,你之前的正则问题出在贪婪匹配和未区分年份括号与其他括号上,调整后的正则表达式如下:
^(.*?)(?:\s*\((\d{4})\))?\s*(.*)$
正则各部分说明
^:锁定字符串开头,避免匹配中间无关内容(.*?):非贪婪匹配主标题,遇到年份括号或字符串末尾就停止,确保主标题不会被后续内容吞噬(?:\s*\((\d{4})\))?:可选的年份捕获部分?:表示这是一个非捕获组,仅用于包裹年份匹配逻辑\s*匹配括号前的任意空格(兼容条目里的空格格式)(\d{4})捕获四位数字的年份?标记整个年份组为可选,没有年份时该组为空
\s*:匹配年份括号后的任意空格,保证附加信息提取干净(.*)$:捕获剩余的所有内容作为附加信息(包括期数、装帧类型等),直到字符串结尾
测试匹配效果
将正则应用到你的条目上,会得到以下三列结果:
- Marvel Comics Presents (1988) #125 → 主标题:
Marvel Comics Presents,年份:1988,附加信息:#125 - Spider-Man Legends Vol. II: Todd Mcfarlane Book I (Trade Paperback) → 主标题:
Spider-Man Legends Vol. II: Todd Mcfarlane Book I,年份:空,附加信息:(Trade Paperback) - Spider-Man Legends Vol. II: Todd Mcfarlane Book I → 主标题:
Spider-Man Legends Vol. II: Todd Mcfarlane Book I,年份:空,附加信息:空 - Spider-Man Legends Vol. II: Todd Mcfarlane Book I (1998) → 主标题:
Spider-Man Legends Vol. II: Todd Mcfarlane Book I,年份:1998,附加信息:空 - Marvel Comics Presents #125 → 主标题:
Marvel Comics Presents,年份:空,附加信息:#125
内容的提问来源于stack exchange,提问作者Benjamin Stringer
相关产品推荐
相关产品推荐

