首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式裁剪课程日程数据

使用正则表达式裁剪课程日程数据
EN

Stack Overflow用户
提问于 2011-02-24 14:50:16
回答 3查看 123关注 0票数 0

在使用正则表达式从以下类型的数据中提取时间信息方面,我需要您的帮助:

代码语言:javascript
复制
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值集的计划,它是大得多的数据集的一部分,包含其他属性(由选项卡分隔)并存储在文本文件中。我希望从这些时间表值中删除所有与非时间相关的信息,以便它们成为以下内容,

例如:

代码语言:javascript
复制
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

好的,这就是我所知道的关于时间表值的内容:

  1. 计划值中的标记由空格分隔。
  2. 时间标记有数字、破折号、冒号,可以包含字母AM、PM、a、p。

我有这样的感觉,这可能是一个简单的任务,对你们来说,不幸的是,我不是很精通的regex。

所以我急需你的帮助。非常感谢!

PS:我在编辑文件时使用Notepad++,如果有方法可以使用Notepad++进行编辑的话。或者我也可以使用更新命令在MySQL中这样做吗?

相似问题

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-19 06:35:59

我意识到可以使用space作为分隔符拆分字符串,并获得返回列表的第二个元素。

票数 0
EN

Stack Overflow用户

发布于 2011-02-24 15:34:37

您可能可以在mySQL级别上更容易地做到这一点,而不是在Regex中这样做。我不熟悉mySQL,但我认为有一个等价于TSQL的CharIndex称为索引

下面是使用TSQL的一行快速而肮脏的内容--这绝不是说它是高效的,但它有效,您应该适应于遍历原始数据并转换为mySql语法:

代码语言:javascript
复制
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

将导致:

代码语言:javascript
复制
 7-8:30AM

只需使用mySQL等效。

票数 0
EN

Stack Overflow用户

发布于 2014-01-03 16:06:27

有点晚了,但尝试一下:

搜索什么:.*?(\d+(?::\d+)?(?:[ap]m?)?-\d+(?::\d+)?(?:[ap]m?)?).*

替换为:$1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5106214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档