【问题标题】:Matching groups in regex正则表达式中的匹配组
【发布时间】:2018-05-28 03:33:04
【问题描述】:

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

  • LyraCalSWC20161203.png
  • LyraL4C20180302.png

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

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

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

非常感谢任何帮助

谢谢

【问题讨论】:

  • 试试Lyra(\\w+)(\\d{8}).*

标签: java regex


【解决方案1】:
  • 您的模式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

【讨论】:

  • 一个或多个运算符可以省略,所以代替:Lyra([A-Za-z0-9]{3,6})+(\\d{8}).* 使用:Lyra([A-Za-z0-9]{3,6})(\\d{8}).*
【解决方案2】:

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

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

Demo

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多