采用正则表达式来解析字符串(用VB.NET实现)

来源:百度知道 编辑:UC知道 时间:2024/09/25 02:33:36
有这样字符串:
Dim str As String = "A;B=w;C=x;D=y;E=z;"
(其中ABCD和wxyz分别都是代表连续的不定长的字符的,但中间没有特殊字符,他们每一个都是由大写或小写的字母和数字组成,因为具体写我嫌麻烦,所以就由ABCDwxyz分别来代表相应位置上的字符,其实只要方法对,即使看成上述字符串也是无所谓的。)

现在的问题很简单,就是:我想用VB.NET里面的正则表达式来求出xyz放在三个变量里就行(没有w),就是后三个等号与分号之间的内容,最好语句非常简短。
还请大侠们给予指点。
感谢各位的回答,看到二楼的兄弟写了那么多,我都想给你分了,可是我想用的是正则表达式,呵呵,非常感谢!

Dim str As String = "A;B=w;C=x;D=y;E=z;"
Dim reg As New System.Text.RegularExpressions.Regex("\w+;\w+=\w+;\w+=(?<x>\w+);\w+=(?<y>\w+);\w+=(?<z>\w+);")
Dim m As System.Text.RegularExpressions.Match=reg.Match(str)
If m.Success Then
MsgBox("x="+m.Groups("x").Value.ToString)
MsgBox("y="+m.Groups("y").Value.ToString)
MsgBox("z="+m.Groups("z").Value.ToString)
endif

你的问题描述的真不清楚
猜想吧

如果没有特殊字符,并且长度不会为0,并且你定义的字符串中分号是有意思的
用Split方法就可以

如果分号无意义
[^=]+?\=[^=]+?\;{0,}

循环匹配出片段,再用Split('=')啦

->方法
Private Function Test(ByVal _str As String) As List(Of String)

Dim array As List(Of String) = New List(Of String)
Dim ch() As Char = _str.ToCharArray()
Dim count As Integer = 0
Dim tempString As String = &q