求高手构造一正则表达式

来源:百度知道 编辑:UC知道 时间:2024/05/26 07:13:29
主要是用于从一个长的字符串中找出所有符合要求的字符串。

例如:
原字符串:ABCDIEFACBDFABCEDEFFHKLABIHLEFGH
符合要求的字符串:ABCDIEF ABIHLEF (即以AB开头,中间某个位置包括I,以EF结尾的字符串,但不匹配ABCDIEFACBDFABCEDEF)
要求能具有通用性,最好写成个函数
Function 函数名(参数1,参数2,参数3,参数4)
'功能说明:重参数1指定的字符串中返回由以参数2开始,中间包括参数3,以参数4结尾的所有字符串组成的字符串
'======功能代码==========

'======功能代码==========

End Function

我原来用的是Instr()来查找的,功能可以实现,但不稳定,有时会出现Instr()调用错误,还请高人能给出个稳定的函数,不胜感激!

用在ASP程序中

晕,最高只能悬赏100分,本想500的!
偶对正则表达式不懂,只是听说很好用。所以在给出答案时最好能解释下给出的表达式的意思和用法,谢谢。
============================
研究了几天总算是搞定了,程序的完整版本大家可以去看下:
http://www.aligon.cn/kantianya
感谢各位的回答,但分数只能给一个人,所以很难决定。如果发起投票的话到时分数是不是会给得票数最多的那位呢?如果是的话我就让大家来决定了。

s="ABCDIEFACBDFABCEDEFFHKLABIHLEFGH"
for each i in GetStr(s,"AB","I","EF")
msgbox i
next

function GetStr(s,a,b,c)
dim arr()
dim i
dim re,ms
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "(" & a & "(?:(?!" & a & ").)*?" & b & ".*?" & c & ")"
set ms = re.Execute(s)
redim arr(ms.count-1)
For i = 0 to ms.count - 1
arr(i) = ms(i).SubMatches(0)
next
GetStr=arr
end function

<%
Function DoMatches(s,a,b,c)
Dim SubjectString = s;
Dim myRegExp, myMatches, myMatch
Set myRegExp = New RegExp
'myRegExp.Pattern = "AB((?!AB).)*?I.*?EF"
myRegExp.Pattern = a+"((?!"+a+").)*?"+b+".*?"+c
Set myMatches = myRegExp.Execute(SubjectString)
For Each myMatch In myMatches
'这里遍历所有匹配,你可以打印出来看看,如