这是我的代码:
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
这是Text:
的值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
结束班
为什么我的数据阵列没有填充任何数据?
答案 0 :(得分:1)
我怀疑是因为你试图让你的模式匹配多行。
.
字符与除换行符\n
之外的任何内容匹配,并且您要匹配的Private Sub/End Sub
正文中包含换行符。
您必须启用正则表达式选项SingleLine
(请参阅the msdn for regular expressions):
SingleLine
与输入中有多少行无关 串。相反,会导致。 (期间)元字符匹配任何 字符,,而不是除之外的任何字符,这是默认字符。
因此,请尝试New Regex(SearchString,RegexOptions.SingleLine)
而不是New Regex(SearchString)
。