我需要您帮助使用正则表达式从以下类型的数据中提取时间信息:
TTh 7-8:30AM lec AIT PANEL D
WF 1-2:30PM lec BA 104
S 9:00a-12:00p lec CPA 306
MTh 7:00a-8:30a lec AIT PANEL D
TTh 2:30-4PM lec BA 104
TTh 2:30-4PM lec BA 104
TTh 4-5:30PM lec CPA 301
S 9AM-12PM lec TBA
Sa 09:00a-12:00p lec BA 301
Sa 09:00a-12:00p lec BA 301
MTh 08:30a-10:00a lec BA 301
TTh 1-2:30PM lec CPA 301
TTh 7-8:30AM lec AIT PANEL D
正如您所看到的,这些是课程安排。这组值是更大数据集的一部分, 包含其他属性(由选项卡分隔)并存储在文本文件中。我想修剪 来自这些计划值的所有非时间相关信息,以便它们成为以下内容,
例如:
7-8:30AM
1-2:30PM
9:00a-12:00p
7:00a-8:30a
2:30-4PM
2:30-4PM
4-5:30PM
9AM-12PM
09:00a-12:00p
好的,这就是我对日程安排价值的了解:
我有这种感觉,这对你们来说可能是一项轻松的任务, 不幸的是,我并不精通正则表达式。
这就是为什么我非常需要你的帮助。 非常感谢你!
PS: 我正在使用Notepad ++编辑文件, 如果我有办法使用Notepad ++可以做到这一点。 或者我也可以使用Update命令在MySQL中执行此操作吗?
答案 0 :(得分:0)
你可以在mySQL级别更容易做到这一点,而不是在Regex中这样做。我不熟悉mySQL,但我认为有一个等同于TSQL CharIndex的SUBSTRING_INDEX。
使用 TSQL 的一行快速而肮脏 - 绝不宣称效率高,但它可行,您应该适应迭代原始数据并转换为mySql语法:
declare @scheduleLine varchar(500);
Set @scheduleLine = 'TTh 7-8:30AM lec AIT PANEL D';
declare @firstSpace int, @secondSpace int;
Set @firstSpace = CHARINDEX(' ',@scheduleLine,0);
Set @secondSpace = CHARINDEX(' ',@scheduleLine, @firstSpace+1)
Declare @timeOfClass varchar(20)
Set @timeOfClass = SUBSTRING(@scheduleLine, @firstSpace, (@secondSpace-@firstSpace));
Select @timeOfClass as TimeOfClass
将导致:
7-8:30AM
只需使用mySQL等效文件。
答案 1 :(得分:0)
有点晚了,但试试看:
搜索内容:.*?(\d+(?::\d+)?(?:[ap]m?)?-\d+(?::\d+)?(?:[ap]m?)?).*
替换为:$1
答案 2 :(得分:0)
我意识到我可以使用space
作为分隔符来拆分字符串,并获取返回列表的第二个元素。