VBA正则表达式未返回预期值

时间:2015-05-14 04:57:39

标签: regex vba

我正在使用Excel中的宏为我的大学课程编写时间表。我的时间表信息是以明文形式的简明格式:

主题名称

第1课详情

第2课详情

第3课详情

主题2名称

第1课详情

等。

主题3等..

我将课程详细信息作为字符串,并希望根据此信息找出我的主题名称。

我的方法是匹配课程代码(4位数字,然后是3个大写字母),然后是非贪婪的,然后是我的课程详情

正则表达式=“\ d {4} [A-Z] {3}(。| \ n)*?” &安培; ClassDetails

然后使用left(ReturnedMatch,7)获取课程代码

然而,当我遍历所有类详细信息时,它总是返回主题1的代码,即使对于主题2类2等也是如此。

提前致谢:)

编辑添加代码和数据:

textmatch =来自单元格(1,1)的类详细信息,从2个字母的日期表示开始,到例如日期结束。

We 9:00AM - 10:50AM
GU Bus Sch G42_2.17
Gervase Tuxworth
03/04/2015 - 04/01/2015

关注的代码在这里

.Pattern = "\d{4}[A-Z]{3}(.|\n)*?" & textmatch
Set matches = .Execute(Cells(1, 1).Value)
classname = Left(matches(0), 7)
MsgBox classname

单元格(1,1).Value =

Semester 1 2015 > Undergraduate > Griffith University
1004ICT - Foundations of Comp Systems
Status  Units   Grading Grade   Program
Enrolled
10.00
Graded

B Eng Honours Civil / B IT
Class Nbr   Section Component   Days & Times    Room    Instructor     Start/End Date
10719
L101
Lecture

We 9:00AM - 10:50AM
GU Bus Sch G42_2.17
Gervase Tuxworth
03/04/2015 - 04/01/2015

We 9:00AM - 10:50AM
GU Bus Sch G42_2.17
Gervase Tuxworth
04/15/2015 - 06/03/2015
13621
C106
Comp Lab
We 3:00PM - 4:50PM
Multimedia G23_2.21
Gervase Tuxworth
03/11/2015 - 04/01/2015



We 3:00PM - 4:50PM
Multimedia G23_2.21
Gervase Tuxworth
04/15/2015 - 06/03/2015

1007ENG - Engineering Fundamentals
Status  Units   Grading Grade   Program
Enrolled
10.00
Graded

B Eng Honours Civil / B IT
Class Nbr   Section Component   Days & Times    Room    Instructor      Start/End Date
11289
L101
Lecture
Tu 3:00PM - 4:50PM
Lec Th3/4 G17_Theatre4
Mark Bolton
03/03/2015 - 03/31/2015



Tu 3:00PM - 4:50PM
Lec Th3/4 G17_Theatre4
Mark Bolton
04/14/2015 - 06/02/2015

0 个答案:

没有答案