如何为后跟日期的字符串制作正则表达式

How to make a regex for a string followed by Date

我想为后面的字符串创建一个正则表达式

Daily_Batch_summary_001_SS11_20181107165728.log
Monthly_Batch_summary_002_SS11_20181107165811.log

现在我知道 _Batch_summary__SS11_ 总是很常见。

我最终得到的正则表达式是 _Batch_summary_001_SS11_(\d+).log$ 现在我不知道在正则表达式的开头使用什么来表示,正如您所看到的 Daily,Morning 这个词可能会改变。 001 , 002 也在改变所以我也需要一些技巧

任何帮助将不胜感激,如果我在解释我的问题时遗漏了某些内容,我深表歉意。

您可以将 _ 以外的任意数量的字符与 [^_]* 匹配,要匹配 1 个或多个数字,请使用 \d+:

^([^_]*)_Batch_summary_(\d+)_SS11_(\d+)\.log$

参见regex demo

详情

  • ^ - 字符串开头
  • ([^_]*) - 第 1 组:除 _ 之外的任何 0+ 个字符([^_] 是否定字符 class 匹配除 class)
  • _Batch_summary_ - 文字字符串
  • (\d+) - 第 2 组:一个或多个数字
  • _SS11_ - 文字字符串
  • (\d+) - 第 3 组:一个或多个数字
  • \. - 一个点
  • log - 文字字符串
  • $ - 字符串结尾。