VB.net正则表达式DotAll无法使其工作

时间:2014-11-02 13:27:30

标签: regex vb.net

尝试使用visual basic 2010和Regular表达式解析VB.net中的txt文件。

在Python中,我可以调用DotAll修饰符使.*表示新行,但似乎无法使其在VB.Net中起作用。甚至使用(?s)

这是我得到的

Dim test As Match = Regex.Match(LogFile, "\s+Following Loads are summed\n\s+gravity(?s).*?(F.*?)mN")

If test.Success Then
    Dim results As String = test.Groups(1).Value
    Console.WriteLine(results)
Else
    Console.WriteLine(" did not work")
End If

我正在使用这个网站进行测试并在那里工作:

http://regex101.com/r/pD6zV6/2

结果应该是包含此

的字符串
"F(x)    F(y)    F(z) :  0.000000E+000,    0.000000E+000,    -4.973469E+007"

Text文件总是相同的布局,但是改变了Renvity这个词,所以我需要遍历一个单词列表并为每个案例获取该行。

似乎无法弄清楚为什么它在脚本中不起作用,它可以在测试网站上运行。

干杯 机工

1 个答案:

答案 0 :(得分:1)

您无需添加任何修饰符。 (.|\n)*?会对任何字符进行零次或多次非贪婪匹配。

\sFollowing Loads are summed.*\n\s+gravity(?:.|\n)*?\s*(.*?)\s*mN

DEMO

OR

\s+Following Loads are summed\n\s+gravity[\S\s]*?(F.*?)\s*mN

DEMO