如何为后跟日期的字符串制作正则表达式
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
- 文字字符串
$
- 字符串结尾。
我想为后面的字符串创建一个正则表达式
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
- 文字字符串$
- 字符串结尾。