2012-01-09 21 views
1

这里是我的代码:RegularExpressions不工作

Dim StartString As String = "Private Sub" 
    Dim EndString As String = "End Sub" 

    Dim SearchString As String = StartString & "(.+)" & EndString 

    Dim Data() As String = New Regex(SearchString).Matches(Text).Cast(Of Match).Select(Function(m) m.Groups(1).Value).ToArray 

这是文本的价值:

Public Class Form1 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Dim x As Integer 

    x = 10 
    MessageBox.Show(x/"Simon") 

End Sub 

Private Function Test() 

    Dim x As Integer 

    x = 30 
    MessageBox.Show(x/"Test") 

End Function 

末级

为什么我的数据数组不填充任何数据?

回答

1

我怀疑这是因为你试图让你的模式匹配多行。

.字符匹配任何除了换行符\n,并且要符合有换行符在它Private Sub/End Sub的身体。

您必须启用正则表达式选项SingleLine(见the msdn for regular expressions):

SingleLine
无关用多少行输入 字符串。相反,会导致。 (期间)元字符匹配任意 字符而不是除\ n之外的任何字符,这是默认值。

因此,请尝试New Regex(SearchString,RegexOptions.SingleLine)而不是New Regex(SearchString)