1

如何获得具有换行符(vbNewLine、vblf、vbcrlf 等)和续行符的字符串。以下似乎只是检索“第一行文本”。

Dim rx As Regex
Dim var1 As String = "First line of text. " & vbNewLine & _
                     "Second line of text. " & vbNewLine & _
                     "Third line of text."

rx = New Regex(".*[\n\r]")
Dim search As String = rx.Match(var1).Value

预期结果:search = "第一行文本。第二行文本。第三行文本。"

4

3 回答 3

3

要将多行模式与正则表达式匹配,您必须使用单行选项。它修改点的行为,以便捕获每个字符,包括换行符。

rx = New Regex("(?s).*")

在此处链接到 msdn 。

于 2012-12-14T15:03:07.937 回答
0

查看正则表达式“RegexOptions.MultiLine”。它应该是 Regex 对象的第二个参数,如下所示:

rx = New Regex(".*[\n\r]", RegexOptions.MultiLine)

我认为这会奏效。如果只是用空格替换换行符,函数 String.Replace 也足够了。

于 2012-12-14T15:02:29.350 回答
0

要获得的不仅仅是第一场比赛,请使用rx.Matches(var1). 在此之后,您可以遍历集合。

但是请注意,您的正则表达式有一个错误:由于没有后跟换行符,最后一行将不匹配。一个简单的解决方法是:

rx = new Regex("\n");
var matches = rx.Split(var1);
//iterate collection

由于标签,注释代码在 c# 中。

于 2012-12-14T15:05:05.777 回答