首页 > 解决方案 > 如何使用正则表达式将字符串的一部分捕获到组中?

问题描述

我需要从以下位置捕获 4 个组:

John.7200_24.6.txt.gz

输出:

Group1: John
Group2: 7200
Group3: 24
Group4: 6

这是我的正则表达式:([^.|_|data|gz]+)

它捕获具有多个匹配项的单个组。我该如何解决?

标签: regex

解决方案


这个模式([^.|_|data|gz]+)可以写成([^._datagz|]+)它使用否定字符类来匹配除了列出的单个字符之外的 1+ 个字符。

您使用单个捕获组进行拆分,如果您想要 4 个单独的组,您应该创建 4 个组并匹配而不是拆分。

^(\w+)\.(\d+)_(\d+)\.(\d+)
  • ^字符串的开始
  • (\w+)\.在第 1 组中捕获 1+ 个单词字符并匹配.
  • (\d+)_在第 2 组中捕获 1+ 个数字并匹配_
  • (\d+)\.在第 3 组中捕获 1+个数字并匹配.
  • (\d+)在第 4 组中捕获 1+ 个数字

正则表达式演示

或匹配完整的示例字符串:

^(\w+)\.(\d+)_(\d+)\.(\d+)\.\w+\.gz$

推荐阅读