c# - 删除成绩单数据 C# 中的时间模式
问题描述
我正在阅读 C# 中的脚本文本文件,如下所示。删除时间模式并仅将文本和表单提取为段落的最佳方法是什么。
如下所述,实现输出的最佳方法是什么?常用表达?
成绩单文件的输入如下:
0:0:0.0 --> 0:0:0.820
Really.
0:0:1.840 --> 0:0:4.400
I have meeting on 10th August 2020 at 10 A.M.
0:1:59.670 --> 0:2:1.720
I can extract text without time pattern.
0:2:3.450 --> 0:2:7.280
All seems good.
输出:需要就像段落一样。
Really. I have meeting on 10th August 2020 at 10 A.M. I can see extract text without time pattern. All seems good.
更新: 代码:
我可以像下面这样尝试,但我仍然觉得需要更好的优化代码。如果句子中没有日期或时间,我的代码似乎有效。
var fileContent = File.ReadAllText(filePath, Encoding.UTF8);
//removing HTML tags and spl. characters
string removedHTMltagsContent = Regex.Replace(fileContent.Replace(" ", string.Empty).Replace("WEBVTT", "").Replace("-->", "").Replace(":", "").Replace(".",""), "<.*?>", String.Empty);
//Removing all Digits
var output = Regex.Replace(removedHTMltagsContent, @"[\d-]", string.Empty);
//removing all multiple empty lines
string resultString = Regex.Replace(output, @"^\s+$[\r\n]*", string.Empty, RegexOptions.Multiline);
Console.WriteLine(resultString);
解决方案
您可以将类似时间的模式与-->
带有前导和尾随空白字符的模式匹配以将其删除,或者将非空白字符匹配到该行的其余部分以保留在一个组中。
(?:\s*\d+:\d+:\d+\.\d+ -->.*\s*|\G)(\S.*)\s*
解释
(?:
非捕获组\s*\d+:\d+:\d+\.\d+ -->.*\s*
将类似时间的模式与前导和尾随空格字符匹配|
或者\G
在上一场比赛结束时断言位置
)
关闭非捕获组(\S.*)\s*
匹配非空白字符和行的其余部分,后跟 0+ 空白字符
在替换中使用空格和组 1 $1
如果有前导空格,您可以修剪字符串以将其删除。
示例代码
string pattern = @"(?:\s*\d+:\d+:\d+\.\d+ -->.*\s*|\G)(\S.*)\s*";
string input = @"...";
Console.WriteLine(Regex.Replace(input, pattern, " $1").Trim());
输出
Really. I have meeting on 10th August 2020 at 10 A.M. I can extract text without time pattern. All seems good.
推荐阅读
- python - PySpark 的“DataFrameLike”类型与 pandas.DataFrame
- react-native-gifted-chat - renderCustomView 在气泡中显示我返回的 customView 后附加并显示默认消息 - giftedchat
- sql - 我想通过以下方式获得`has_many的不同记录:`关联
- python - 如何在每个模式中添加没有前缀的自定义 django 管理站点和 url?
- java - Unity 2020.3.xx Gradle 构建失败
- vector - 在 3D 矢量中填充周围的单元格
- file-upload - 无法使用 NestJs 和 Multer 上传文件
- c# - 编译为 exe 时,NuGet 弹出窗口不显示
- python - Anaconda 导航器由于缺少插件可可而无法启动 - macOS 11.1
- php - MySQL 中的 Windows 时间