匹配正则表达式中的组

时间:2018-05-27 19:16:08

标签: java regex

我想使用以下字符串中的正则表达式匹配2个组:

  • LyraCalSWC20161203.png
  • LyraL4C20180302.png

这是我提议的正则表达式 - Lyra([A-Za-z]{3,6})+(\\d{8}).*

它应匹配2组。第一个是L4CCalSWC,第二个组是8个数字的日期字符串。

我可以让一个小组工作,例如LyraL4C(\\d{8}).*,但不能处理两种变化。

任何帮助非常感谢

由于

2 个答案:

答案 0 :(得分:3)

  • 您的模式Lyra([A-Za-z]{3,6})+(\\d{8}).*非常好,但您错过L4C不仅包含字母,还包含数字。
  • 除此之外,您还指定第一个组有3到6个元素{3,6},因此不需要使用+

所以你需要Lyra([A-Za-z0-9]{3,6})(\\d{8}).*

See Regex demo

答案 1 :(得分:2)

您可能希望使用通用\w选择器选择所有单词字符以匹配样本的两个版本

^Lyra(\w{3,6})(\d{8})\.png$

Demo

转换为 ^Lyra(\\w{3,6})(\\d{8})\\.png$