我想使用REGEX将数据解析为3列
胶片数据:
漫威漫画出品(1988)第125期
蜘蛛侠传奇第二卷:托德麦克法兰书一(贸易平装本)
蜘蛛侠传奇第二卷:托德·麦克法兰第一册
蜘蛛侠传奇第二卷:托德·麦克法兰第一册(1998)
漫威漫画出品#125
预期产出:enter image description here
我可以看到如何分组,但似乎不能正则化它:enter image description here
我构建了这个表达式:(.*)\((\d{4})\)(.*)
实际上,我想使用?
量词来说明以下内容:(.*)\((\d{4})\)**?**(.*)
有点像说这个群可能在那里,也可能不在那里?
不过,还是不行。
1条答案
按热度按时间bzzcjhmw1#
您可以使用2个捕获组,其中最后2个是可选的:
模式匹配:
^
字符串开始(.*?)
捕获组1(?:\((\d{4})\))?
可选的非捕获组捕获组2中的4位数字\s*
匹配可选空白字符(#\d+)?
可选组3,匹配#
和1+位数$
字符串结束参见regex101 demo。