regex 使用正则表达式解析数据,通过分组将其拆分为列

b09cbbtk  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(73)

我想使用REGEX将数据解析为3列
胶片数据:
漫威漫画出品(1988)第125期
蜘蛛侠传奇第二卷:托德麦克法兰书一(贸易平装本)
蜘蛛侠传奇第二卷:托德·麦克法兰第一册
蜘蛛侠传奇第二卷:托德·麦克法兰第一册(1998)
漫威漫画出品#125
预期产出:enter image description here
我可以看到如何分组,但似乎不能正则化它:enter image description here
我构建了这个表达式:(.*)\((\d{4})\)(.*)
实际上,我想使用?量词来说明以下内容:(.*)\((\d{4})\)**?**(.*)有点像说这个群可能在那里,也可能不在那里?
不过,还是不行。

bzzcjhmw

bzzcjhmw1#

您可以使用2个捕获组,其中最后2个是可选的:

^(.*?)(?:\((\d{4})\))?\s*(#\d+)?$

模式匹配:

  • ^字符串开始
  • (.*?)捕获组1
  • (?:\((\d{4})\))?可选的非捕获组捕获组2中的4位数字
  • \s*匹配可选空白字符
  • (#\d+)?可选组3,匹配#和1+位数
  • $字符串结束

参见regex101 demo

相关问题