在使用正则表达式从以下类型的数据中提取时间信息方面,我需要您的帮助:
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 因此,正如您所看到的,这些是courses.This值集的计划,它是大得多的数据集的一部分,包含其他属性(由选项卡分隔)并存储在文本文件中。我希望从这些时间表值中删除所有与非时间相关的信息,以便它们成为以下内容,
例如:
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好的,这就是我所知道的关于时间表值的内容:
我有这样的感觉,这可能是一个简单的任务,对你们来说,不幸的是,我不是很精通的regex。
所以我急需你的帮助。非常感谢!
PS:我在编辑文件时使用Notepad++,如果有方法可以使用Notepad++进行编辑的话。或者我也可以使用更新命令在MySQL中这样做吗?
发布于 2017-02-19 06:35:59
我意识到可以使用space作为分隔符拆分字符串,并获得返回列表的第二个元素。
发布于 2011-02-24 15:34:37
您可能可以在mySQL级别上更容易地做到这一点,而不是在Regex中这样做。我不熟悉mySQL,但我认为有一个等价于TSQL的CharIndex称为索引。
下面是使用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等效。
发布于 2014-01-03 16:06:27
有点晚了,但尝试一下:
搜索什么:.*?(\d+(?::\d+)?(?:[ap]m?)?-\d+(?::\d+)?(?:[ap]m?)?).*
替换为:$1
https://stackoverflow.com/questions/5106214
复制相似问题