regex - Delphi - 用户指定的字符串操作

标签 regex string delphi

我在 Delphi7 中遇到问题。我的应用程序根据一组命名约定创建 mpg 视频文件,即

\000_A_Title_YYYY-MM-DD_HH-mm-ss_Index.mpg

在此文件名中强制执行以下规则:

000 是视频序列。每当用户按下停止键时,它就会递增。

A(或 B、C、D)指定录制摄像机 - 因此视频文件与最多四个同时播放的视频流链接。

Title 是一个可变长度字符串。在我的应用程序中,它不能包含 _

YYYY-MM-DD_HH-mm-ss 是视频序列(不是单个文件)的开始时间

索引是从零开始的排序索引,并且在1个视频序列内递增。也就是说,视频文件的最长长度为 15 分钟,一旦达到此长度,就会以相同的序列号但下一个索引开始新的视频文件。利用这个,我们可以计算出文件的实际开始时间(文件名解码时间+ 15*Index)

使用此方法,我的应用程序可以提取视频文件开始录制的开始时间。

现在我们有进一步的要求来处理任意命名的视频文件。我唯一确定的是文件名中的某处会有 YYYY-MM-DD HH-mm-ss。

我如何允许用户指定他正在导入的文件的文件名约定?像正则表达式之类的东西?我知道命名方案必须有一个模式。

因此,如果用户在文本框中输入 ?_(Camera)_*_YYYY-MM-DD_HH-mm-ss_(Index).mpg 到文本框中,我将如何获取开始时间?有更好的解决方案吗?或者我只需要处理我们遇到的每一种可能性?

(我知道这可能不是处理此类问题的最佳方法,但我们无法改变问题 - 新的视频文件是由另一家公司录制的)

最佳答案

我不确定您是否尝试将用户输入解析为组件 '?(Camera)*_YYYY-MM-DD_HH-mm-ss_(Index).mpg` 但如果您只是尝试获取像这样的日期和时间,日期在组 1 中,时间在组 2 中

(\d{4}-\d{2}-\d{2})_(d{2}-\d{2}-\d{2})

否则,不确定您想做什么。

关于regex - Delphi - 用户指定的字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224807/

相关文章:

regex - Powershell Regex - 捕获多个字符串

javascript - 棘手的正则表达式捕获

c# - 分割字符串“a_b_c_d.1.2.3.4”的更好方法

delphi - 如何在Delphi中计算64位DLL的CRC?

delphi - 在 dbctrlgrid 中显示 xml 文件内容

javascript - 正则表达式和 GBP(£)

javascript - 检查变量中带括号的语法

java - 将各种符号的字符串转换为整数

C++ 2 字节数组计算(字符数组、字符串和整数)

delphi - 我们可以在Delphi中模拟gMSA帐户吗?